package com.web.frame.web.controller.web;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.web.frame.entity.base.ResponseBase;
import com.web.frame.entity.response.ResponseSubchainData;
import com.web.frame.service.web.MoacSubchainService;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

@RestController
@RequestMapping("/api/moac/subchain")
@Api(tags= {"8.子链接口"},description="相关接口")
public class MoacSubchainController {

	@Autowired
	private MoacSubchainService moacSubchainService;


	@PostMapping("/v1/deploy")
	@ApiOperation(value="1.1 部署私链（ProcWind）")
	public ResponseEntity<ResponseBase<Map<String, String>>> deploy(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id,确保积分余额充足",required=true)@RequestParam String accountId,

			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,

			@ApiParam(value="私链收益账户地址",required=true)@RequestParam String via,

			@ApiParam(value="vnode合约编码,为空则使用系统默认的",required=true)
			@RequestParam(defaultValue="60806040523480156200001157600080fd5b506040516020806200163c83398101604052516200002e620001c1565b600060028190556003839055808252602080830182815260016040808601828152603243016060880190815260001960808901908152835180880190945287845260a0890193845284548086018087559590985288517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf660069099029889018054600160a060020a031916600160a060020a0390921691909117815595517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf789015591517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8880155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf9870155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa8601555180519194869462000199937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb90920192019062000201565b5050600280546001019055505060048054600160a060020a0319163317905550620002a69050565b60c0604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b620002a391905b808211156200028257600081556001016200028d565b90565b61138680620002b66000396000f3006080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301fd575b81146100df578063065a13f01461011257806332434a2e1461019f578063380e687a1461020d5780633ccfd60b146102225780635991e0ee146102395780637ff8fdaa1461024e5780638da5cb5b14610263578063ab92030114610294578063b08bcb1f146102b8578063cb7f8266146102d6578063ce9d9bd7146102eb578063dcd3cab21461030c578063ee8c9dd5146103d1578063f9eae020146103f2575b600080fd5b3480156100eb57600080fd5b50610100600160a060020a0360043516610407565b60408051918252519081900360200190f35b34801561011e57600080fd5b5061012a600435610419565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016457818101518382015260200161014c565b50505050905090810190601f1680156101915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051602060046024803582810135601f81018590048502860185019096528585526101f9958335600160a060020a03169536956044949193909101919081908401838280828437509497506105569650505050505050565b604080519115158252519081900360200190f35b34801561021957600080fd5b506101f9610735565b34801561022e57600080fd5b50610237610817565b005b34801561024557600080fd5b50610100610b7e565b34801561025a57600080fd5b50610100610b84565b34801561026f57600080fd5b50610278610b89565b60408051600160a060020a039092168252519081900360200190f35b3480156102a057600080fd5b50610278600160a060020a0360043516602435610b98565b3480156102c457600080fd5b50610237600435602435604435610bcf565b3480156102e257600080fd5b50610100610f37565b3480156102f757600080fd5b506101f9600160a060020a0360043516610f3d565b34801561031857600080fd5b50610324600435610fec565b6040518087600160a060020a0316600160a060020a0316815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610391578181015183820152602001610379565b50505050905090810190601f1680156103be5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156103dd57600080fd5b50610237600160a060020a03600435166110ca565b3480156103fe57600080fd5b506101006111a7565b60006020819052908152604090205481565b6060600060028054101561043d576040805160208101909152600081529150610550565b6002548381151561044a57fe5b069050801515610458576001015b61048960018281548110151561046a57fe5b6000918252602090912060069091020154600160a060020a0316610f3d565b1561053e57600180548290811061049c57fe5b6000918252602091829020600560069092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105325780601f1061050757610100808354040283529160200191610532565b820191906000526020600020905b81548152906001019060200180831161051557829003601f168201915b50505050509150610550565b60408051602081019091526000815291505b50919050565b60006105606111ad565b600160a060020a0384166000908152602081905260409020541580156105925750600354670de0b6b3a7640000023410155b151561059d57600080fd5b600160a060020a03848116825234602080840191825260016040850181815260324301606087019081526000196080880190815260a088018a8152845480860180875560009690965289517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66006909202918201805473ffffffffffffffffffffffffffffffffffffffff191691909a1617895596517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf788015592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf887015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf9860155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa850155518051919486949093610701937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb9092019201906111ed565b505060028054600160a060020a03881660009081526020819052604090208190556001908101909155935050505092915050565b336000908152602081905260408120548190811061075257600080fd5b5033600081815260208190526040902054600180549192918390811061077457fe5b6000918252602090912060069091020154600160a060020a03161461079857600080fd5b6001808054839081106107a757fe5b9060005260206000209060060201600201541415156107c557600080fd5b436001828154811015156107d557fe5b6000918252602090912060046006909202010155600260018054839081106107f957fe5b906000526020600020906006020160020181905550600191505b5090565b336000908152602081905260408120548190811061083457600080fd5b3360008181526020819052604090205460018054919450908490811061085657fe5b6000918252602090912060069091020154600160a060020a03161461087a57600080fd5b6002600180548490811061088a57fe5b9060005260206000209060060201600201541480156108cc57506121c06001838154811015156108b657fe5b9060005260206000209060060201600401540143115b15610b7a5760018054839081106108df57fe5b600091825260209091206001600690920201810154600280546000190190819055825491935090811061090e57fe5b600091825260209091206006909102015460018054600160a060020a03909216918490811061093957fe5b906000526020600020906006020160000160006101000a815481600160a060020a030219169083600160a060020a03160217905550600160025481548110151561097f57fe5b9060005260206000209060060201600101546001838154811015156109a057fe5b90600052602060002090600602016001018190555060016002548154811015156109c657fe5b9060005260206000209060060201600301546001838154811015156109e757fe5b9060005260206000209060060201600301819055506001600254815481101515610a0d57fe5b906000526020600020906006020160040154600183815481101515610a2e57fe5b9060005260206000209060060201600401819055506001600254815481101515610a5457fe5b9060005260206000209060060201600501600183815481101515610a7457fe5b90600052602060002090600602016005019080546001816001161561010002031660029004610aa4929190611267565b506001600254815481101515610ab657fe5b600091825260208220600690910201805473ffffffffffffffffffffffffffffffffffffffff191681556001810182905560028101829055600381018290556004810182905590610b0a60058301826112dc565b505081600080600185815481101515610b1f57fe5b60009182526020808320600690920290910154600160a060020a0316835282019290925260409081018220929092559051339183156108fc02918491818181858888f19350505050158015610b78573d6000803e3d6000fd5b505b5050565b60025481565b603281565b600454600160a060020a031681565b600560205281600052604060002081815481101515610bb357fe5b600091825260209091200154600160a060020a03169150829050565b6004546000908190600160a060020a03163314610beb57600080fd5b600085118015610bfc575060058511155b1515610c0757600080fd5b600084118015610c18575060025484105b1515610c2357600080fd5b6002546000198585010192508210610c3e5760016002540391505b50805b838110610f30578460056000600184815481101515610c5c57fe5b60009182526020808320600690920290910154600160a060020a0316835282019290925260400190205410610f275760056000600183815481101515610c9e57fe5b60009182526020808320600690920290910154600160a060020a031683528201929092526040018120610cd091611323565b600280546000190190819055600180549091908110610ceb57fe5b600091825260209091206006909102015460018054600160a060020a039092169183908110610d1657fe5b906000526020600020906006020160000160006101000a815481600160a060020a030219169083600160a060020a031602179055506001600254815481101515610d5c57fe5b906000526020600020906006020160010154600182815481101515610d7d57fe5b9060005260206000209060060201600101819055506001600254815481101515610da357fe5b906000526020600020906006020160030154600182815481101515610dc457fe5b9060005260206000209060060201600301819055506001600254815481101515610dea57fe5b906000526020600020906006020160040154600182815481101515610e0b57fe5b9060005260206000209060060201600401819055506001600254815481101515610e3157fe5b9060005260206000209060060201600501600182815481101515610e5157fe5b90600052602060002090600602016005019080546001816001161561010002031660029004610e81929190611267565b506001600254815481101515610e9357fe5b600091825260208220600690910201805473ffffffffffffffffffffffffffffffffffffffff191681556001810182905560028101829055600381018290556004810182905590610ee760058301826112dc565b505080600080600184815481101515610efc57fe5b60009182526020808320600690920290910154600160a060020a031683528201929092526040019020555b60001901610c41565b5050505050565b60035481565b600160a060020a0381166000908152602081905260408120541515610f6457506000610fe7565b6001600160a060020a038316600090815260208190526040902054600180549091908110610f8e57fe5b906000526020600020906006020160020154148015610fe45750600160a060020a038216600090815260208190526040902054600180544392908110610fd057fe5b906000526020600020906006020160030154105b90505b919050565b6001805482908110610ffa57fe5b600091825260209182902060069091020180546001808301546002808501546003860154600487015460058801805460408051601f6000199a841615610100029a909a01909216969096049788018b90048b0281018b01909552868552600160a060020a03909716995093979196909593949093918301828280156110c05780601f10611095576101008083540402835291602001916110c0565b820191906000526020600020905b8154815290600101906020018083116110a357829003601f168201915b5050505050905086565b600160a060020a03811660009081526005602081905260408220541015610b7a575060005b600160a060020a03821660009081526005602052604090205481101561115e57600160a060020a038216600090815260056020526040902080543391908390811061113657fe5b600091825260209091200154600160a060020a0316141561115657610b7a565b6001016110ef565b600160a060020a038216600090815260056020908152604082208054600181018255908352912001805473ffffffffffffffffffffffffffffffffffffffff1916331790555050565b6121c081565b60c0604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061122e57805160ff191683800117855561125b565b8280016001018555821561125b579182015b8281111561125b578251825591602001919060010190611240565b5061081392915061133d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112a0578054855561125b565b8280016001018555821561125b57600052602060002091601f016020900482015b8281111561125b5782548255916001019190600101906112c1565b50805460018160011615610100020316600290046000825580601f106113025750611320565b601f016020900490600052602060002090810190611320919061133d565b50565b508054600082559060005260206000209081019061132091905b61135791905b808211156108135760008155600101611343565b905600a165627a7a72305820343b4b2f17371a7db87127694588537a8dcf35a03b2cad524bdcfcdb2aab51ac0029")
			String vnodeCode,

			@ApiParam(value="注册vnode最少押金,默认为0",required=true)@RequestParam(defaultValue="0") String vnodeBmin,

			@ApiParam(value="子链协议合约编码",required=true)
			@RequestParam(defaultValue="60806040523480156200001157600080fd5b506040516200172b3803806200172b83398101604090815281516020808401519284015160006002559190930180519093620000539160039186019062000064565b506004919091556008555062000109565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000a757805160ff1916838001178555620000d7565b82800160010185558215620000d7579182015b82811115620000d7578251825591602001919060010190620000ba565b50620000e5929150620000e9565b5090565b6200010691905b80821115620000e55760008155600101620000f0565b90565b61161280620001196000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631aa887ca811461014d578063202cc5e1146101be578063365bfb9e146101f6578063380e687a1461020d5780633ccfd60b1461022257806341205305146102375780634420e486146102585780636220fb1d1461026c57806364f3ef461461029c57806367bd927e146102b35780636e62adcb146102e657806376a95e88146102fb57806399f874d8146103355780639adea8071461034a578063aab3193314610371578063b8a167e6146103a5578063bd8d4bd8146103bd578063c3a919d0146103d2578063c9a856a3146103f3578063cb7f826614610449578063ce9d9bd71461045e578063de42f13c1461047f578063e17095a41461049a578063f21e6f7a146104b2578063f9eae0201461053c575b600080fd5b34801561015957600080fd5b5061016e600160a060020a0360043516610551565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101aa578181015183820152602001610192565b505050509050019250505060405180910390f35b3480156101ca57600080fd5b506101e2600160a060020a0360043516602435610647565b604080519115158252519081900360200190f35b34801561020257600080fd5b5061020b6108f3565b005b34801561021957600080fd5b506101e2610907565b34801561022e57600080fd5b5061020b6109ac565b34801561024357600080fd5b5061016e600160a060020a0360043516610a38565b6101e2600160a060020a0360043516610b0d565b34801561027857600080fd5b506101e2600160a060020a036004351660243560ff60443516606435608435610c36565b6101e2600160a060020a0360043516602435610df0565b3480156102bf57600080fd5b506102d4600160a060020a03600435166110d5565b60408051918252519081900360200190f35b3480156102f257600080fd5b506102d46110e7565b34801561030757600080fd5b5061031c600160a060020a03600435166110ed565b6040805192835260208301919091528051918290030190f35b34801561034157600080fd5b506102d4611106565b34801561035657600080fd5b506101e2600160a060020a036004358116906024351661110b565b34801561037d57600080fd5b50610389600435611225565b60408051600160a060020a039092168252519081900360200190f35b3480156103b157600080fd5b5061020b60043561124d565b3480156103c957600080fd5b506102d461125f565b3480156103de57600080fd5b506102d4600160a060020a0360043516611265565b3480156103ff57600080fd5b50610414600160a060020a0360043516611277565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561045557600080fd5b506102d46112b0565b34801561046a57600080fd5b506101e2600160a060020a03600435166112b6565b34801561048b57600080fd5b506102d4600435602435611301565b3480156104a657600080fd5b506102d4600435611363565b3480156104be57600080fd5b506104c76113ab565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054857600080fd5b506102d4611439565b60608060006001600085600160a060020a0316600160a060020a03168152602001908152602001600020600101546040519080825280602002602001820160405280156105a8578160200160208202803883390190505b509150600090505b600160a060020a0384166000908152600160208190526040909120015481101561064057600160a060020a03841660009081526001602052604090206002018054829081106105fb57fe5b6000918252602090912001548251600160a060020a039091169083908390811061062157fe5b600160a060020a039092166020928302909101909101526001016105b0565b5092915050565b6000805b600160a060020a038416600090815260016020819052604090912001548110156108e957600160a060020a038416600090815260016020526040902060020180543391908390811061069957fe5b600091825260209091200154600160a060020a03161480156106ed5750600160a060020a03841660009081526001602052604090206003018054849190839081106106e057fe5b9060005260206000200154145b156108e157600160a060020a0384166000908152600160208190526040909120805485900381559081018054600019019081905560029091018054909190811061073357fe5b6000918252602080832090910154600160a060020a0387811684526001909252604090922060020180549190921691908390811061076d57fe5b60009182526020808320919091018054600160a060020a031916600160a060020a03948516179055918616815260019182905260409020908101546003909101805490919081106107ba57fe5b6000918252602080832090910154600160a060020a0387168352600190915260409091206003018054839081106107ed57fe5b6000918252602080832090910192909255600160a060020a0386168152600191829052604090209081015460029091018054909190811061082a57fe5b600091825260208083209091018054600160a060020a0319169055600160a060020a038616825260019081905260409091209081015460039091018054909190811061087257fe5b60009182526020808320909101829055600160a060020a038616825260019052604090206002018054906108aa9060001983016115a9565b50600160a060020a03841660009081526001602052604090206003018054906108d79060001983016115a9565b5060019150610640565b60010161064b565b5060009392505050565b336000908152600560205260409020439055565b3360009081526020819052604081206002015460011461092657600080fd5b33600090815260016020819052604090912001541561094457600080fd5b336000818152602081905260409020436004820155600290810181905580546000190190556109729061143f565b6040805133815290517f4803dcd528253b802a22997f7a3b15bcc6be53c1f2ba8f110aa26c25d652a68f9181900360200190a15060015b90565b6002336000908152602081905260409020600201541480156109e35750336000908152602081905260409020600401546121c00143115b15610a36573360009081526020819052604080822080546001909101549151600160a060020a03909116926108fc831502929190818181858888f19350505050158015610a34573d6000803e3d6000fd5b505b565b60608060006001600085600160a060020a0316600160a060020a0316815260200190815260200160002060010154604051908082528060200260200182016040528015610a8f578160200160208202803883390190505b509150600090505b600160a060020a0384166000908152600160208190526040909120015481101561064057600160a060020a0384166000908152600160205260409020600301805482908110610ae257fe5b90600052602060002001548282815181101515610afb57fe5b60209081029091010152600101610a97565b600160a060020a0381166000908152602081905260408120600201541580610b5057506001600160a060020a038316600090815260208190526040902060020154145b8015610b685750600454670de0b6b3a7640000023410155b1515610b7357600080fd5b610b7c82611537565b600160a060020a03821660008181526020819052604090208054600160a060020a0319169091178155600201541515610bed57600160a060020a0382166000908152602081905260409020436005016003820155600019600482015560028054600190810190915534910155610c0f565b600160a060020a03821660009081526020819052604090206001018054340190555b6001600160a060020a0383166000908152602081905260409020600201555060015b919050565b600080610c42876112b6565b1515610c515760009150610de6565b604080516c01000000000000000000000000600160a060020a038a168102825233026014820152905160029160288082019260209290919082900301816000865af1158015610ca4573d6000803e3d6000fd5b5050506040513d6020811015610cb957600080fd5b5051604080516000808252602082810180855285905260ff8a168385015260608301899052608083018890529251939450600160a060020a038b169360019360a0808501949193601f19840193928390039091019190865af1158015610d23573d6000803e3d6000fd5b50505060206040510351600160a060020a0316141515610d465760009150610de6565b600160a060020a0387166000908152600160208181526040808420549184905290922001549087011115610d7d5760009150610de6565b600160a060020a0387166000818152600160208181526040832080548b0181556002810180548085018255908552828520018054600160a060020a0319163317905560038101805480850182559085529184209091018a90559290915290810180548201905591505b5095945050505050565b6000805b600160a060020a038416600090815260016020819052604090912001548110156108e957600160a060020a0384166000908152600160205260409020600201805433919083908110610e4257fe5b600091825260209091200154600160a060020a0316148015610e965750600160a060020a0384166000908152600160205260409020600301805484919083908110610e8957fe5b9060005260206000200154145b156110cd57600160a060020a03841660009081526001602081905260409091208054859003815590810180546000190190819055600290910180549091908110610edc57fe5b6000918252602080832090910154600160a060020a03878116845260019092526040909220600201805491909216919083908110610f1657fe5b60009182526020808320919091018054600160a060020a031916600160a060020a0394851617905591861681526001918290526040902090810154600390910180549091908110610f6357fe5b6000918252602080832090910154600160a060020a038716835260019091526040909120600301805483908110610f9657fe5b6000918252602080832090910192909255600160a060020a03861681526001918290526040902090810154600290910180549091908110610fd357fe5b600091825260208083209091018054600160a060020a0319169055600160a060020a038616825260019081905260409091209081015460039091018054909190811061101b57fe5b60009182526020808320909101829055600160a060020a038616825260019052604090206002018054906110539060001983016115a9565b50600160a060020a03841660009081526001602052604090206003018054906110809060001983016115a9565b50600160a060020a0384166000908152602081905260408082206001018054869003905551339185156108fc02918691818181858888f193505050501580156108d7573d6000803e3d6000fd5b600101610df4565b60056020526000908152604090205481565b60025481565b6001602081905260009182526040909120805491015482565b600581565b6000805b600160a060020a038416600090815260016020819052604090912001548110156108e957600160a060020a0384811660009081526001602052604090206002018054918516918390811061115f57fe5b600091825260209091200154600160a060020a03161480156111a65750600160a060020a038316600090815260066020908152604080832054600590925290912054439101105b1561121d57600160a060020a03841660009081526001602052604090206003018054829081106111d257fe5b6000918252602080832090910154600160a060020a03871683526001918290526040909220805492909203825581018054600019019081905560029091018054909190811061073357fe5b60010161110f565b600780548290811061123357fe5b600091825260209091200154600160a060020a0316905081565b33600090815260066020526040902055565b60085481565b60066020526000908152604090205481565b60006020819052908152604090208054600182015460028301546003840154600490940154600160a060020a0390931693919290919085565b60045481565b600160a060020a03811660009081526020819052604081206002015460011480156112fb5750600160a060020a03821660009081526020819052604090206003015443115b92915050565b600080603283101561131257603292505b8260025410156113255760ff9150610640565b506002546103e8908402048281101561133b5750815b60028054826101000281151561134d57fe5b0460010181151561135a57fe5b04949350505050565b600081151561137457506000610c31565b6002548210611385575060ff610c31565b60028054836101000281151561139757fe5b046001018115156113a457fe5b0492915050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156114315780601f1061140657610100808354040283529160200191611431565b820191906000526020600020905b81548152906001019060200180831161141457829003601f168201915b505050505081565b6121c081565b600754805b60008111156115325782600160a060020a031660076001830381548110151561146957fe5b600091825260209091200154600160a060020a031614156115295760078054600019840190811061149657fe5b60009182526020909120015460078054600160a060020a039092169160001984019081106114c057fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556007805460001984019081106114fb57fe5b60009182526020909120018054600160a060020a031916905560078054906115279060001983016115a9565b505b60001901611444565b505050565b600160a060020a0381166000908152602081905260409020600201541515610a3457600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018054600160a060020a038316600160a060020a031990911617905550565b815481835581811115611532576000838152602090206115329181019083016109a991905b808211156115e257600081556001016115ce565b50905600a165627a7a72305820a1729ca2f056dc194a7261e7c925a7a148cea61ef3bb6512c4e2cb671017321b0029")
			String subchainProtocolBaseCode,

			@ApiParam(value="子链协议合约名称",required=true)@RequestParam String subchainProtocolName,

			@ApiParam(value="scs注册最少押金,最少填1",required=true)@RequestParam(defaultValue="1") String subchainProtocolBmin,

			@ApiParam(value="0表示pos，1表示ipfs",required=true)@RequestParam(defaultValue="0") String subchainProtocolType,

			@ApiParam(value="erc20合约编码",required=true)@RequestParam String erc20Code,

			@ApiParam(value="子链合约编码",required=true)
			@RequestParam(defaultValue="60806040526018601655670de0b6b3a76400006017556601c6bf5263400060195564174876e800601a55662386f26fc10000601b55662386f26fc1000060275564e8d4a51000602c5564174876e800602d556404a817c800602e556050602f5560006031556001603355600060345560fa60385560066039556005603d556000603e5560a0603f55606e6040556101f46041556101f46042556064604355348015620000aa57600080fd5b5060405161010080620078378339810180604052620000cd91908101906200055e565b60008060008660011480620000e25750866003145b80620000ee5750866005145b80620000fa5750866007145b15156200010657600080fd5b85600b1480620001165750856015145b8062000122575085601f145b806200012e5750856033145b806200013a5750856063145b15156200014657600080fd5b602884101580156200015a57506101f48411155b15156200016657600080fd5b60058490556006849055602b8054600160a060020a031916600160a060020a038c8116919091179091556040517fde42f13c0000000000000000000000000000000000000000000000000000000081528c94509084169063de42f13c90620001d59088908b906004016200066f565b602060405180830381600087803b158015620001f057600080fd5b505af115801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200022b91908101906200061f565b60038190555082600160a060020a031663365bfb9e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200028957600080fd5b505af11580156200029e573d6000803e3d6000fd5b505060328054600160a060020a031916600160a060020a038d8116919091179182905560338c9055604080517f313ce567000000000000000000000000000000000000000000000000000000008152905192909116955085935063313ce56792506004808201926020929091908290030181600087803b1580156200032257600080fd5b505af115801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200035d91908101906200061f565b6034819055601210156200037057600080fd5b60345460120360348190555081600160a060020a03166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620003d457600080fd5b505af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200040f91908101906200061f565b9050603454600a0a603354820202603181905550603454600a0a6033546031548115156200043957fe5b048115156200044457fe5b0481146200045157600080fd5b6001879055600286905560008054600160a060020a031916600160a060020a038d161781556004908155600e8054600160a060020a03191633179055600580546040517fb8a167e6000000000000000000000000000000000000000000000000000000008152600160a060020a0387169363b8a167e693620004d69302910162000659565b600060405180830381600087803b158015620004f157600080fd5b505af115801562000506573d6000803e3d6000fd5b5050600019600d5550506011805461ffff19166101001790556000602a819055603055506200069d9950505050505050505050565b600062000549825162000691565b9392505050565b60006200054982516200068e565b600080600080600080600080610100898b0312156200057c57600080fd5b60006200058a8b8b6200053b565b98505060206200059d8b828c016200053b565b9750506040620005b08b828c016200053b565b9650506060620005c38b828c0162000550565b9550506080620005d68b828c0162000550565b94505060a0620005e98b828c0162000550565b93505060c0620005fc8b828c0162000550565b92505060e06200060f8b828c0162000550565b9150509295985092959890939650565b6000602082840312156200063257600080fd5b600062000640848462000550565b949350505050565b62000653816200068e565b82525050565b6020810162000669828462000648565b92915050565b604081016200067f828562000648565b62000549602083018462000648565b90565b600160a060020a031690565b61718a80620006ad6000396000f3006080604052600436106104475763ffffffff60e060020a60003504166303e3c9ac8114610460578063072892451461048b5780630ac168a1146104a05780630be6075a146104b5578063110afc0f146104ca5780631463ef07146104ea57806315e9977e14610517578063208f2a311461052c57806321a1b4951461055957806326009deb1461057c5780632ad0f79b146105915780632b114a7c146105b15780632da03719146105c6578063301b4887146105e857806330be59441461060857806330e7f8ef14610628578063312e014b1461063d57806332ed5b121461065d5780633a46492a146106945780633b082706146106b45780633c1f16aa146106d457806340caae06146106f657806343d726d61461070b57806344a587811461072057806346d636761461074f57806348291f1e146107645780634d13deae146107795780634ed9880c1461078c57806350859fd9146107a1578063517549a0146107c157806357365df2146107e15780635defc56c146108015780635fd652db14610816578063634eaea61461082b578063689b00ed1461084057806369f3576f146108605780636b35d367146108755780636d9817eb146108955780636da49b83146108b55780636f7e15da146108ca578063793ebd89146108ea5780637a813833146108ff57806383d6f697146109145780638640c8b1146109295780638ce744261461094b578063950f78791461096057806399d53d43146109755780639a911393146109955780639b09723e146109b55780639eb34e43146109ca578063a2f09dfa146109df578063a53dae59146109e7578063a7fc1161146109fc578063a94f7a7014610a11578063a9555e6c14610a31578063aa7e298614610a51578063ab3c7d8714610a71578063b062a92714610a86578063b19932c014610a9b578063b74c3eff14610acb578063b859889614610af8578063be93f1b314610b18578063beba618e14610b38578063bff92d7014610b58578063c063d98714610b6d578063c067247c14610b9b578063c20b124614610bb0578063c4474a5914610bd0578063c66da99714610be5578063c7f758a814610c05578063ca3b852f14610c32578063ca5e56aa14610c47578063cae56d5814610c67578063cbe5b2a414610c87578063cc819ad014610cb4578063d0fab88514610cd4578063d12ff2eb14610cf4578063d4f79bd514610d09578063d736b38214610d1e578063d7c3dc5f14610d33578063d826f88f14610d48578063db22ccad14610d5d578063dc393c0914610d72578063dc82c54f14610d87578063dcd338ca14610d9c578063df4b780d14610dbc578063e3bbb4f114610ddc578063e5df842514610df1578063e9e150d014610e06578063eb23414614610e1b578063eba308f814610e30578063f21df01214610e45578063f2faa2a614610e5a578063f3fef3a314610e6f578063f9326cf514610e8f578063fae67d4014610ea4578063fcac00bc14610eb9575b600054600160a060020a0316331461045e57600080fd5b005b34801561046c57600080fd5b50610475610ece565b6040516104829190617019565b60405180910390f35b34801561049757600080fd5b50610475610ed4565b3480156104ac57600080fd5b50610475610eda565b3480156104c157600080fd5b50610475610ee0565b3480156104d657600080fd5b5061045e6104e5366004616756565b610ee6565b3480156104f657600080fd5b5061050a610505366004616792565b610feb565b604051610482919061700b565b34801561052357600080fd5b5061047561152b565b34801561053857600080fd5b5061054c610547366004616756565b611531565b6040516104829190616dd9565b34801561056557600080fd5b5061056e611559565b604051610482929190616f99565b34801561058857600080fd5b50610475611702565b34801561059d57600080fd5b5061054c6105ac366004616583565b611708565b3480156105bd57600080fd5b50610475611723565b3480156105d257600080fd5b506105db611729565b6040516104829190617027565b3480156105f457600080fd5b5061050a61060336600461688e565b6117b7565b34801561061457600080fd5b5061050a61062336600461688e565b611a68565b34801561063457600080fd5b50610475611b87565b34801561064957600080fd5b5061045e610658366004616756565b611b8d565b34801561066957600080fd5b5061067d610678366004616756565b611be2565b6040516104829b9a99989796959493929190616e30565b3480156106a057600080fd5b5061045e6106af366004616756565b611c47565b3480156106c057600080fd5b506104756106cf366004616756565b611c63565b3480156106e057600080fd5b506106e9611c82565b604051610482919061705a565b34801561070257600080fd5b5061045e612114565b34801561071757600080fd5b5061045e61213b565b34801561072c57600080fd5b5061074061073b366004616756565b6121e8565b60405161048293929190616f0f565b34801561075b57600080fd5b506104756122b1565b34801561077057600080fd5b506104756122b7565b61045e6107873660046165a9565b6122bd565b34801561079857600080fd5b506104756124ac565b3480156107ad57600080fd5b506104756107bc366004616583565b6124b2565b3480156107cd57600080fd5b5061050a6107dc3660046168ad565b612664565b3480156107ed57600080fd5b506104756107fc366004616583565b6127db565b34801561080d57600080fd5b5061045e6127ed565b34801561082257600080fd5b50610475612825565b34801561083757600080fd5b5061045e61282b565b34801561084c57600080fd5b5061045e61085b366004616756565b612849565b34801561086c57600080fd5b5061050a612865565b34801561088157600080fd5b50610475610890366004616583565b612a3e565b3480156108a157600080fd5b5061045e6108b0366004616756565b612a50565b3480156108c157600080fd5b50610475612a6c565b3480156108d657600080fd5b5061045e6108e53660046165a9565b612a72565b3480156108f657600080fd5b50610475612b36565b34801561090b57600080fd5b5061050a612b3c565b34801561092057600080fd5b50610475612b41565b34801561093557600080fd5b5061093e612b47565b6040516104829190616f88565b34801561095757600080fd5b5061054c612bad565b34801561096c57600080fd5b50610475612bbc565b34801561098157600080fd5b5061050a61099036600461662b565b612bc2565b3480156109a157600080fd5b5061050a6109b036600461662b565b612e88565b3480156109c157600080fd5b50610475613210565b3480156109d657600080fd5b50610475613216565b61045e61321c565b3480156109f357600080fd5b506104756132e8565b348015610a0857600080fd5b506104756132ee565b348015610a1d57600080fd5b5061054c610a2c366004616756565b6132f4565b348015610a3d57600080fd5b50610475610a4c366004616583565b613302565b348015610a5d57600080fd5b5061045e610a6c366004616756565b613314565b348015610a7d57600080fd5b5061050a613330565b348015610a9257600080fd5b5061047561334d565b348015610aa757600080fd5b50610abb610ab63660046165fb565b613353565b6040516104829493929190616fbe565b348015610ad757600080fd5b50610aeb610ae6366004616583565b613647565b6040516104829190617049565b348015610b0457600080fd5b5061050a610b1336600461668c565b613720565b348015610b2457600080fd5b5061045e610b33366004616756565b6137db565b348015610b4457600080fd5b5061050a610b53366004616756565b6138e3565b348015610b6457600080fd5b50610475613a5f565b348015610b7957600080fd5b50610b8d610b88366004616756565b613a65565b604051610482929190616ed4565b348015610ba757600080fd5b50610475613b28565b348015610bbc57600080fd5b50610475610bcb366004616756565b613b70565b348015610bdc57600080fd5b50610475613bb5565b348015610bf157600080fd5b50610475610c00366004616756565b613bbb565b348015610c1157600080fd5b50610c25610c20366004616756565b613c18565b6040516104829190617038565b348015610c3e57600080fd5b506104756142a2565b348015610c5357600080fd5b5061050a610c62366004616756565b6142a8565b348015610c7357600080fd5b50610475610c82366004616756565b61474d565b348015610c9357600080fd5b50610ca7610ca2366004616756565b614761565b604051610482919061706b565b348015610cc057600080fd5b5061050a610ccf36600461688e565b614788565b348015610ce057600080fd5b5061050a610cef366004616583565b614e0d565b348015610d0057600080fd5b50610475614e29565b348015610d1557600080fd5b50610475614e2f565b348015610d2a57600080fd5b50610475614e34565b348015610d3f57600080fd5b50610475614e3a565b348015610d5457600080fd5b5061045e614e40565b348015610d6957600080fd5b50610475614e6f565b348015610d7e57600080fd5b50610475614e75565b348015610d9357600080fd5b5061054c614e7a565b348015610da857600080fd5b5061050a610db73660046166d9565b614e89565b348015610dc857600080fd5b5061045e610dd7366004616583565b6150b3565b348015610de857600080fd5b5061047561529d565b348015610dfd57600080fd5b506104756152a3565b348015610e1257600080fd5b506104756152a9565b348015610e2757600080fd5b5061054c6152af565b348015610e3c57600080fd5b506104756152be565b348015610e5157600080fd5b506104756152c4565b348015610e6657600080fd5b506104756152ca565b348015610e7b57600080fd5b5061045e610e8a3660046165fb565b6152d0565b348015610e9b57600080fd5b5061047561532b565b348015610eb057600080fd5b50610475615331565b348015610ec557600080fd5b50610475615337565b60025481565b60425481565b60195481565b603f5481565b600e54600160a060020a031633148015610f01575060295481105b1515610f0c57600080fd5b602980546000198101908110610f1e57fe5b9060005260206000209060020201602982815481101515610f3b57fe5b60009182526020909120825460029283029091018054600160a060020a031916600160a060020a03909216919091178155600180840180549293610f9093838601936000199082161561010002011604615f75565b5050602980549091506000198101908110610fa757fe5b6000918252602082206002909102018054600160a060020a031916815590610fd26001830182615ff6565b50506029805490610fe790600019830161603a565b5050565b6000806000805a9250600f548b1080156110265750601080548c90811061100e57fe5b600091825260209091200154600160a060020a031633145b151561103157600080fd5b61103a8b613b70565b431015801561105757506016546002026110538c613b70565b0143105b151561106257600080fd5b600f5488511461107157600080fd5b600f5460029004875110151561108657600080fd5b602e543a111561109557600080fd5b604454603a54106110a557600080fd5b600160075460009081526013602052604090206006015414156111305760078054600090815260136020908152604080832060056006909101559254825282822054600160a060020a031682526012905290812054111561113057600754600090815260136020908152604080832054600160a060020a031683526012909152902080546000190190555b6008548a518b90600090811061114257fe5b602090810290910101511461115a576000935061151d565b6111633361533d565b1515611172576000935061151d565b89600181518110151561118157fe5b6020908102909101015191506000808381526013602052604090206006015411156111af576000935061151d565b60008281526013602052604081208054600160a060020a03191633178155600854600182015560020183905589518a919081106111e857fe5b60209081029091018101516000848152601390925260409091206003015588518990600190811061121557fe5b602090810290910181015160008481526013909252604082206004015590505b600f548110156112df576000828152601360205260409020885160059091019089908390811061126157fe5b6020908102909101810151825460018101845560009384528284200155838252601390526040902060108054600f909201918390811061129d57fe5b600091825260208083209091015483546001818101865594845291909220018054600160a060020a031916600160a060020a0390921691909117905501611235565b60016000838152601360205260409020600601556112fc8b613b70565b60008381526013602090815260408220600781019390935560088301805460018181018355918452828420018f905560098401805482019055601190930180549384018155825281209091018054600160a060020a0319163317905590505b86518110156113b05760008281526013602052604090208751600a9091019088908390811061138657fe5b6020908102909101810151825460018181018555600094855292909320909201919091550161135b565b6000828152601360205260408120600b81018054600160a060020a031916600160a060020a038a16179055600c81018790556010015584151561146f5760405160e560020a63010cee25028152600d9063219dc4a090611417903090600290600401616ef4565b602060405180830381600087803b15801561143157600080fd5b505af1158015611445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114699190810190616738565b506114ed565b60405160e560020a63010cee25028152600d9063219dc4a090611499903090600b90600401616ef4565b602060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114eb9190810190616738565b505b6007829055600a8b90553a5a33600090815260146020526040902080549186036153ee0192909202019055600193505b505050979650505050505050565b60315481565b601080548290811061153f57fe5b600091825260209091200154600160a060020a0316905081565b60608060006060806000603c80549050935083604051908082528060200260200182016040528015611595578160200160208202803883390190505b509250836040519080825280602002602001820160405280156115cc57816020015b60608152602001906001900390816115b75790505b509150600090505b838110156116f757603c8054829081106115ea57fe5b60009182526020909120600390910201548351600160a060020a039091169084908390811061161557fe5b600160a060020a03909216602092830290910190910152603c80548290811061163a57fe5b600091825260209182902060026003909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156116d25780601f106116a7576101008083540402835291602001916116d2565b820191906000526020600020905b8154815290600101906020018083116116b557829003601f168201915b505050505082828151811015156116e557fe5b602090810290910101526001016115d4565b509094909350915050565b601c5481565b601860205260009081526040902054600160a060020a031681565b60015481565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156117af5780601f10611784576101008083540402835291602001916117af565b820191906000526020600020905b81548152906001019060200180831161179257829003601f168201915b505050505081565b600080600084600114156117fe5760108054339190869081106117d657fe5b600091825260209091200154600160a060020a0316146117f95760009250611a60565b611866565b846002141561185d5733600160a060020a03166018600060108781548110151561182457fe5b6000918252602080832090910154600160a060020a03908116845290830193909352604090910190205416146117f95760009250611a60565b60009250611a60565b601654600f54600554600d540191026002020143116118885760009250611a60565b601080548590811061189657fe5b6000918252602082200154905460175460405160e060020a63202cc5e1028152600160a060020a039384169550919092169250829163202cc5e1916118df918691600401616ef4565b602060405180830381600087803b1580156118f957600080fd5b505af115801561190d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119319190810190616738565b50600f8054600019019081905560108054909190811061194d57fe5b60009182526020909120015460108054600160a060020a03909216918690811061197357fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055506010600f548154811015156119b257fe5b60009182526020909120018054600160a060020a031916905560108054906119de906000198301616066565b5060405160e560020a63010cee25028152600d9063219dc4a090611a089030908490600401616ef4565b602060405180830381600087803b158015611a2257600080fd5b505af1158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a5a9190810190616738565b50600192505b505092915050565b6000808360011415611aad576010805433919085908110611a8557fe5b600091825260209091200154600160a060020a031614611aa85760009150611b80565b611b15565b8360021415611b0c5733600160a060020a031660186000601086815481101515611ad357fe5b6000918252602080832090910154600160a060020a0390811684529083019390935260409091019020541614611aa85760009150611b80565b60009150611b80565b601c54600511611b285760009150611b80565b5060005b601c54811015611b5d5782601d8260058110611b4457fe5b01541415611b555760009150611b80565b600101611b2c565b82601d601c54600581101515611b6f57fe5b0155601c8054600190810190915591505b5092915050565b60045481565b601554600214611b9c57600080fd5b6024805433919083908110611bad57fe5b600091825260209091200154600160a060020a031614611bcc57600080fd5b5033600090815260126020526040902060059055565b601360205260009081526040902080546001820154600283015460038401546004850154600686015460078701546009880154600b890154600c8a01546010909a0154600160a060020a03998a169a989997989697959694959394929390911691908b565b600e54600160a060020a03163314611c5e57600080fd5b603f55565b6023805482908110611c7157fe5b600091825260209091200154905081565b611c8a61608a565b60008054600160a060020a03198116600160a060020a03909116178155604080516002808252606082810190935282918291816020016020820280388339019050509250600154836000815181101515611ce057fe5b60209081029091010152600254835184906001908110611cfc57fe5b60209081029091018101919091528351611d1e91600187019190860190616107565b50604080516003808252608082019092529060208201606080388339019050509150601954826000815181101515611d5257fe5b60209081029091010152601a54825183906001908110611d6e57fe5b60209081029091010152601b54825183906002908110611d8a57fe5b60209081029091018101919091528251611dac91600287019190850190616107565b506016546003850155602b5460048086018054600160a060020a03938416600160a060020a03199182161790915560175460058801556030546006880155600e546007880180549190941691161790915560315460088601556040805182815260a081019091529060208201608080388339019050509050603e54816000815181101515611e3657fe5b60209081029091010152603f54815182906001908110611e5257fe5b60209081029091010152604054815182906002908110611e6e57fe5b60209081029091010152604154815182906003908110611e8a57fe5b60209081029091018101919091528151611eac91600987019190840190616107565b5060108054611ebf91600a870191616142565b5060248054611ed291600b870191616142565b5060408051610180810182528554600160a060020a031681526001860180548351602082810282018101909552818152929388938186019390929091830182828015611f3d57602002820191906000526020600020905b815481526020019060010190808311611f29575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611f9557602002820191906000526020600020905b815481526020019060010190808311611f81575b505050918352505060038201546020808301919091526004830154600160a060020a039081166040808501919091526005850154606085015260068501546080850152600785015490911660a0840152600884015460c084015260098401805482518185028101850190935280835260e090940193919290919083018282801561203e57602002820191906000526020600020905b81548152602001906001019080831161202a575b50505050508152602001600a82018054806020026020016040519081016040528092919081815260200182805480156120a057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612082575b50505050508152602001600b820180548060200260200160405190810160405280929190818152602001828054801561210257602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116120e4575b50505050508152505094505050505090565b600e54600160a060020a0316151561213957600e8054600160a060020a031916331790555b565b600e54600160a060020a0316331461215257600080fd5b60016030556007541515612139576005544303600d90815563219dc4a03060085b6040518363ffffffff1660e060020a028152600401612193929190616ef4565b602060405180830381600087803b1580156121ad57600080fd5b505af11580156121c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121e59190810190616738565b50565b603c8054829081106121f657fe5b6000918252602091829020600391909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f8101889004880285018801909252818452600160a060020a03909416965090949192918301828280156122a75780601f1061227c576101008083540402835291602001916122a7565b820191906000526020600020905b81548152906001019060200180831161228a57829003601f168201915b5050505050905083565b601a5481565b60335481565b603054156122ca57600080fd5b602c543410156122d957600080fd5b600160a060020a038216600090815260286020526040902054156122fc57600080fd5b600160a060020a038216151561231157600080fd5b61231a826124b2565b6004148061232e575061232c826124b2565b155b151561233957600080fd5b600160a060020a038281166000818152602860209081526040808320349081905560458054820190558151606081018352948552848301908152908401868152603c8054600181018083559190955285517fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a7e60039096029586018054600160a060020a0319169190981617875591517fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a7f850155518051919593612423937fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a809091019291019061618e565b50600d925063219dc4a0915030905060065b6040518363ffffffff1660e060020a028152600401612455929190616ef4565b602060405180830381600087803b15801561246f57600080fd5b505af1158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124a79190810190616738565b505050565b60345481565b600080805b6010548210156125095783600160a060020a03166010838154811015156124da57fe5b600091825260209091200154600160a060020a031614156124fe576001925061265d565b6001909101906124b7565b600160a060020a038416600090815260286020526040902054633b9aca0011612535576002925061265d565b600091505b60245482101561258c5783600160a060020a031660248381548110151561255d57fe5b600091825260209091200154600160a060020a03161415612581576003925061265d565b60019091019061253a565b5060005460405160e060020a63ce9d9bd7028152600160a060020a0390911690819063ce9d9bd7906125c2908790600401616dd9565b602060405180830381600087803b1580156125dc57600080fd5b505af11580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126149190810190616738565b156126585761264a84601160005b60208104919091015460115460ff601f90931661010090810a90920483169291900416613720565b15612658576004925061265d565b600092505b5050919050565b6000806000805a6000878152601360205260409020600f549194509250871080156126b05750601080548890811061269857fe5b600091825260209091200154600160a060020a031633145b15156126bb57600080fd5b602e543a11156126ca57600080fd5b6126d33361533d565b15156126e257600093506127d1565b60016006830154146126f757600093506127d1565b43601654600202836007015401101561271357600093506127d1565b5060005b81600901548110156127575786826008018281548110151561273557fe5b9060005260206000200154141561274f57600093506127d1565b600101612717565b84156127855760118201805460018101825560009182526020909120018054600160a060020a031916331790555b60088201805460018181018355600092835260209092200188905560098301805490910190553a5a33600090815260146020526040902080549186036153ee0192909202019055600193505b5050509392505050565b60286020526000908152604090205481565b603054156127fa57600080fd5b600e54600160a060020a0316331461281157600080fd5b6001601555600d63219dc4a0306000612173565b60415481565b600e54600160a060020a0316331461284257600080fd5b6000600955565b600e54600160a060020a0316331461286057600080fd5b604055565b6000808080806030541461287857600080fd5b600e54600160a060020a0316331461288f57600080fd5b6000601555600154600f5410156129ae57600054600f54600160a060020a03909116935091505b60008211156129a0576010805460001984019081106128d157fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509185169163202cc5e19161291691859190600401616ef4565b602060405180830381600087803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129689190810190616738565b5060108054600019840190811061297b57fe5b60009182526020909120018054600160a060020a0319169055600019909101906128b6565b6000600f8190559350612a38565b43600d908155600060095560405160e560020a63010cee2502815263219dc4a0906129e0903090600190600401616ef4565b602060405180830381600087803b1580156129fa57600080fd5b505af1158015612a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a329190810190616738565b50600193505b50505090565b60146020526000908152604090205481565b600e54600160a060020a03163314612a6757600080fd5b603955565b600f5481565b600e54600160a060020a03163314612a8957600080fd5b60408051808201909152600160a060020a0383811682526020808301848152602980546001810180835560009290925285517fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caac60029092029182018054600160a060020a031916919096161785559151805191959493612b2e937fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caad019291019061618e565b505050505050565b60385481565b600081565b60175481565b60606035600001805480602002602001604051908101604052809291908181526020018280548015612ba257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612b84575b505050505090505b90565b600054600160a060020a031681565b60275481565b600080808060305414612bd457600080fd5b612bdd336124b2565b600414612be957600080fd5b601554600114612bfc5760009250612e7e565b60005460405160e060020a63ce9d9bd7028152600160a060020a039091169250829063ce9d9bd790612c32903390600401616dd9565b602060405180830381600087803b158015612c4c57600080fd5b505af1158015612c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c849190810190616738565b1515612c935760009250612e7e565b612ca03360116000612622565b1515612caf5760009250612e7e565b600254600f541115612cc45760009250612e7e565b5060005b600f54811015612d0f576010805433919083908110612ce357fe5b600091825260209091200154600160a060020a03161415612d075760009250612e7e565b600101612cc8565b6017546040517f6220fb1d000000000000000000000000000000000000000000000000000000008152600160a060020a03841691636220fb1d91612d5d9133918b908b908b90600401616f3c565b602060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612daf9190810190616738565b1515612dbe5760009250612e7e565b6010805460018181019092557f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018054600160a060020a03191633908117909155600f8054909201909155600090815260126020526040902060059055600160a060020a0387161515612e50573360008181526018602052604090208054600160a060020a0319169091179055612e79565b3360009081526018602052604090208054600160a060020a031916600160a060020a0389161790555b600192505b5050949350505050565b600080808060305414612e9a57600080fd5b612ea3336124b2565b600414612eaf57600080fd5b601554600214612ec25760009250612e7e565b60005460405160e060020a63ce9d9bd7028152600160a060020a039091169250829063ce9d9bd790612ef8903390600401616dd9565b602060405180830381600087803b158015612f1257600080fd5b505af1158015612f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f4a9190810190616738565b1515612f595760009250612e7e565b612f663360116000612622565b1515612f755760009250612e7e565b60255460265410612f895760009250612e7e565b5060005b600f54811015612fd4576010805433919083908110612fa857fe5b600091825260209091200154600160a060020a03161415612fcc5760009250612e7e565b600101612f8d565b5060005b60245481101561301f576024805433919083908110612ff357fe5b600091825260209091200154600160a060020a031614156130175760009250612e7e565b600101612fd8565b6017546040517f6220fb1d000000000000000000000000000000000000000000000000000000008152600160a060020a03841691636220fb1d9161306d9133918b908b908b90600401616f3c565b602060405180830381600087803b15801561308757600080fd5b505af115801561309b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130bf9190810190616738565b15156130ce5760009250612e7e565b6024805460018181019092557f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec4018054600160a060020a0319163390811790915560268054909201909155600090815260126020526040812055600160a060020a038716151561315d573360008181526018602052604090208054600160a060020a0319169091179055613186565b3360009081526018602052604090208054600160a060020a031916600160a060020a0389161790555b60405160e560020a63010cee25028152600d9063219dc4a0906131b0903090600790600401616ef4565b602060405180830381600087803b1580156131ca57600080fd5b505af11580156131de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132029190810190616738565b506001979650505050505050565b60455481565b60395481565b600e54600090600160a060020a0316331461323657600080fd5b60448054340190819055603a5410156121e557506000603a55601654600f54600554600d54019102600202014381116121e55743600d90815560405160e560020a63010cee2502815263219dc4a090613296903090600890600401616ef4565b602060405180830381600087803b1580156132b057600080fd5b505af11580156132c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fe79190810190616738565b60405481565b603a5481565b602480548290811061153f57fe5b60126020526000908152604090205481565b600e54600160a060020a0316331461332b57600080fd5b603855565b601654600f54600554600d540191026002020143811015905b5090565b601b5481565b606080808060008082808080600160a060020a038c16156133c8578a95505b6035548610156133c35760358054600160a060020a038e1691908890811061339657fe5b600091825260209091200154600160a060020a031614156133b8576001909401935b600190950194613372565b6133d1565b6035548b900394505b846040519080825280602002602001820160405280156133fb578160200160208202803883390190505b50935084604051908082528060200260200182016040528015613428578160200160208202803883390190505b50925084604051908082528060200260200182016040528015613455578160200160208202803883390190505b506040805160028082526060820183529294509190602083019080388339019050509050600094508a95505b6035548610156135fc57600160a060020a038c161561353d5760358054600160a060020a038e169190889081106134b457fe5b600091825260209091200154600160a060020a031614156135385760368054879081106134dd57fe5b906000526020600020015483868151811015156134f657fe5b60209081029091010152603780548790811061350e57fe5b9060005260206000200154828681518110151561352757fe5b602090810290910101526001909401935b6135f1565b603580548790811061354b57fe5b6000918252602090912001548451600160a060020a039091169085908790811061357157fe5b600160a060020a03909216602092830290910190910152603680548790811061359657fe5b906000526020600020015483868151811015156135af57fe5b6020908102909101015260378054879081106135c757fe5b906000526020600020015482868151811015156135e057fe5b602090810290910101526001909401935b600190950194613481565b60385481600081518110151561360e57fe5b6020908102909101015260395481518290600190811061362a57fe5b6020908102919091010152929b919a509850909650945050505050565b61364f6161fb565b600160a060020a0382166000908152603b602090815260409182902082518154606093810282018401855293810184815290939192849284918401828280156136b757602002820191906000526020600020905b8154815260200190600101908083116136a3575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561370f57602002820191906000526020600020905b8154815260200190600101908083116136fb575b50505050508152505090505b919050565b60008060006137308686866153f8565b915061373d3086866153f8565b905060035460ff141561375357600192506137d2565b80821061379c576003548183031161376e57600192506137d2565b60006003548203101561379357600354610100038183031061379357600192506137d2565b600092506137d2565b600354828203116137b057600192506137d2565b6003546101009082011061379357600354610100038282031061379357600192505b50509392505050565b600080603054146137eb57600080fd5b600e54600160a060020a0316331461380257600080fd5b600254600f54602654011061381657600080fd5b5060026015819055600f54602680549254929092030360255560245490556000546040517fe17095a4000000000000000000000000000000000000000000000000000000008152600160a060020a0390911690819063e17095a49061387f908590600401617019565b602060405180830381600087803b15801561389957600080fd5b505af11580156138ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138d19190810190616774565b600355600d63219dc4a0306005612435565b60325460009081908190600160a060020a031615612658576032546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a039091169250829063dd62ed3e906139499033903090600401616ded565b602060405180830381600087803b15801561396357600080fd5b505af1158015613977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061399b9190810190616774565b9050808411612658576040517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038316906323b872dd906139ed90339030908990600401616e08565b602060405180830381600087803b158015613a0757600080fd5b505af1158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613a3f9190810190616738565b1561265857613a58603454600a0a603354860202615473565b925061265d565b603d5481565b6029805482908110613a7357fe5b600091825260209182902060029182020180546001808301805460408051601f60001995841615610100029590950190921696909604928301879004870281018701909552818552600160a060020a0390921695509193909190830182828015613b1e5780601f10613af357610100808354040283529160200191613b1e565b820191906000526020600020905b815481529060010190602001808311613b0157829003601f168201915b5050505050905082565b60006001815b600f548211613b66576016548260020202600554600d540101905043811115613b5b574381039250613b6b565b600190910190613b2e565b600092505b505090565b600080600554600d5401905060095483101515613b995760165460095484030260020201613bab565b601654600954600f5485010302600202015b8091505b50919050565b602d5481565b60165460008281526013602052604081206007015490914360029091029091011015613beb5760025b905061371b565b600f546000838152601360205260409020600901546002021115613c10576001613be4565b600092915050565b613c20616212565b8160011415613f68576007546000908152601360209081526040918290208251610240810184528154600160a060020a0316815260018201548184015260028201548185015260038201546060820152600482015460808201526005820180548551818602810186019096528086529194929360a08601939290830182828015613cc957602002820191906000526020600020905b815481526020019060010190808311613cb5575b50505050508152602001600682015481526020016007820154815260200160088201805480602002602001604051908101604052809291908181526020018280548015613d3557602002820191906000526020600020905b815481526020019060010190808311613d21575b5050505050815260200160098201548152602001600a8201805480602002602001604051908101604052809291908181526020018280548015613d9757602002820191906000526020600020905b815481526020019060010190808311613d83575b50505050508152602001600b820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600c8201548152602001600d8201805480602002602001604051908101604052809291908181526020018280548015613e3257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613e14575b50505050508152602001600e8201805480602002602001604051908101604052809291908181526020018280548015613e8a57602002820191906000526020600020905b815481526020019060010190808311613e76575b50505050508152602001600f8201805480602002602001604051908101604052809291908181526020018280548015613eec57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613ece575b505050505081526020016010820154815260200160118201805480602002602001604051908101604052809291908181526020018280548015613f5857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613f3a575b505050505081525050905061371b565b816002141561371b576008546000908152601360209081526040918290208251610240810184528154600160a060020a0316815260018201548184015260028201548185015260038201546060820152600482015460808201526005820180548551818602810186019096528086529194929360a08601939290830182828015613cc95760200282019190600052602060002090815481526020019060010190808311613cb55750505050508152602001600682015481526020016007820154815260200160088201805480602002602001604051908101604052809291908181526020018280548015613d355760200282019190600052602060002090815481526020019060010190808311613d21575050505050815260200160098201548152602001600a8201805480602002602001604051908101604052809291908181526020018280548015613d975760200282019190600052602060002090815481526020019060010190808311613d835750505050508152602001600b820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600c8201548152602001600d8201805480602002602001604051908101604052809291908181526020018280548015613e3257602002820191906000526020600020908154600160a060020a03168152600190910190602001808311613e145750505050508152602001600e8201805480602002602001604051908101604052809291908181526020018280548015613e8a5760200282019190600052602060002090815481526020019060010190808311613e765750505050508152602001600f8201805480602002602001604051908101604052809291908181526020018280548015613eec57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311613ece57505050505081526020016010820154815260200160118201805480602002602001604051908101604052809291908181526020018280548015613f5857602002820191906000526020600020908154600160a060020a03168152600190910190602001808311613f3a57505050505081525050905061371b565b60075481565b60008060008060008060008060008060008060005a60008f8152601360205260409020603154919d509b5015156142de57600080fd5b60108b01546001146142ef57600080fd5b600160068c01541461430057600080fd5b6143098e613bbb565b995089151561431b5760009c5061473c565b60028a141561437857600560068c01558a54600160a060020a0316600081815260126020526040812054919a50101561436f57600160a060020a038916600090815260126020526040902080546000190190555b60009c5061473c565b600f5460118c01546001985060029091041080156143995750600c8b015415155b80156143af5750603254600160a060020a031615155b156145ef578a600c015495506040548611156143cb5760405495505b600c8b0154600d8c01546032546040517f70a08231000000000000000000000000000000000000000000000000000000008152929091039650600160a060020a0316925082906370a0823190614425903090600401616dd9565b602060405180830381600087803b15801561443f57600080fd5b505af1158015614453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506144779190810190616774565b90508497505b8585018810156145ea57600d8b0180548990811061449757fe5b600091825260209091200154600e8c018054600160a060020a03909216955090899081106144c157fe5b600091825260208220015493509083900390811061436f5781600160a060020a031663a9059cbb85603454600a0a603354878115156144fc57fe5b0481151561450657fe5b046040518363ffffffff1660e060020a028152600401614527929190616ef4565b602060405180830381600087803b15801561454157600080fd5b505af1158015614555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145799190810190616738565b15156145885760009c5061473c565b600160a060020a0384166000908152603b602090815260408220805460018181018355828552838520909101879055908101805480830182559084529190922042910155600c8c018054600019019055603e805482019055979097019661447d565b600096505b861561460c576145fe8e615537565b6146078e615870565b61468a565b60405160e560020a63010cee25028152600d9063219dc4a090614636903090600c90600401616ef4565b602060405180830381600087803b15801561465057600080fd5b505af1158015614664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506146889190810190616738565b505b3a5a8d03613a98010260446000828254039250508190555033600160a060020a03166108fc3a5a8f03613a9801029081150290604051600060405180830381858888f193505050501580156146e3573d6000803e3d6000fd5b506002603054141561473757600e54604554604051600160a060020a039092169130319190910380156108fc02916000818181858888f19350505050158015614730573d6000803e3d6000fd5b5060006044555b60019c505b505050505050505050505050919050565b601d816005811061475a57fe5b0154905081565b6011816002811061476e57fe5b60209182820401919006915054906101000a900460ff1681565b60008060008060008060008060008060005a60008d8152601360205260409020600f54919b5099508d1080156147df5750601080548e9081106147c757fe5b600091825260209091200154600160a060020a031633145b15156147ea57600080fd5b600160068a0154146147fb57600080fd5b602e543a111561480a57600080fd5b6148133361533d565b15156148225760009a50614dfd565b6007548c146148345760009a50614dfd565b61483d8c613bbb565b975087151561484f5760009a50614dfd565b60028814156148ac57600560068a01558854600160a060020a031660008181526012602052604081205491985010156148a357600160a060020a038716600090815260126020526040902080546000190190555b60009a50614dfd565b60008054600160a060020a0316965094505b600a89015485101561492d57600a89018054869081106148da57fe5b906000526020600020015493506000601260006010878154811015156148fc57fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902055600194909401936148be565b603d546023541015614a9957602354603d54600096500392505b600f54851015614a995782151561495d57614a99565b6012600060108781548110151561497057fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020541515614a8e57602380546001810182556000919091527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300185905560108054600160a060020a038816916364f3ef4691889081106149ef57fe5b60009182526020909120015460175460405160e060020a63ffffffff8516028152614a2792600160a060020a03169190600401616ef4565b602060405180830381600087803b158015614a4157600080fd5b505af1158015614a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614a799190810190616738565b50601754604480549091019055600019909201915b600190940193614947565b600094505b8860090154851015614b2f5760108960080186815481101515614abd57fe5b9060005260206000200154815481101515614ad457fe5b6000918252602080832090910154600160a060020a0316808352601290915260409091205490925060051115614b2457600160a060020a0382166000908152601260205260409020805460010190555b600190940193614a9e565b614b3960006158d6565b614b4360016158d6565b604080518d81524360208083019190915282516002938381019382900301816000865af1158015614b78573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250614b9b9190810190616774565b9050600860ff60f860020a600084901a810204166011805460ff19169290910460ff1691909117905560088160011a60f860020a0260f860020a900460ff16811515614be357fe5b6011805461ff0019166101009390920460ff169290920217905560155460021415614c1057614c10615b9d565b614c53565b6002851015614c5357600f54602a5410614c2f576000602a555b614c3c6001602a54611a68565b50602a805460019081019091559490940193614c15565b600d8901541515614c7557614c678c615537565b614c708c615870565b614cf2565b60405160e560020a63010cee25028152600d9063219dc4a090614c9e9030906004908101616ef4565b602060405180830381600087803b158015614cb857600080fd5b505af1158015614ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614cf09190810190616738565b505b85600160a060020a031663365bfb9e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015614d3057600080fd5b505af1158015614d44573d6000803e3d6000fd5b50505050614d50615d0f565b600160108a01553a5a60448054918d03613a98019290920290039055336108fc3a5a8d03613a9801029081150290604051600060405180830381858888f19350505050158015614da4573d6000803e3d6000fd5b5060026030541415614df857600e54604554604051600160a060020a039092169130319190910380156108fc02916000818181858888f19350505050158015614df1573d6000803e3d6000fd5b5060006044555b60019a505b5050505050505050505092915050565b600160a060020a03166000908152601260205260408120541190565b60265481565b600281565b60065481565b60035481565b600e54600160a060020a03163314614e5757600080fd5b43600d908155603c60055563219dc4a030600a612173565b60085481565b600581565b602b54600160a060020a031681565b600754600090815260136020526040812081805a8354909250600160a060020a03163314614eb657600080fd5b600c830154600d8401548751011115614ece57600080fd5b602e543a1115614edd57600080fd5b5060005b8551811015614f745782600d018682815181101515614efc57fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a039092169190911790558451600e840190869083908110614f4a57fe5b60209081029091018101518254600181810185556000948552929093209092019190915501614ee1565b600c830154600d84015414156150065760405160e560020a63010cee25028152600d9063219dc4a090614fae903090600290600401616ef4565b602060405180830381600087803b158015614fc857600080fd5b505af1158015614fdc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506150009190810190616738565b50615084565b60405160e560020a63010cee25028152600d9063219dc4a090615030903090600b90600401616ef4565b602060405180830381600087803b15801561504a57600080fd5b505af115801561505e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506150829190810190616738565b505b3a5a33600090815260146020526040902080549185036153ee0192909202019055600193505b50505092915050565b603c54805b60008211156124a75782600160a060020a0316603c600184038154811015156150dd57fe5b6000918252602090912060039091020154600160a060020a031614156152915782600160a060020a03166108fc603c6001850381548110151561511c57fe5b9060005260206000209060030201600101549081150290604051600060405180830381858888f19350505050158015615159573d6000803e3d6000fd5b50603c8054600019840190811061516c57fe5b600091825260209091206001600390920201015460458054919091039055603c8054600019830190811061519c57fe5b9060005260206000209060030201603c600184038154811015156151bc57fe5b6000918252602090912082546003909202018054600160a060020a031916600160a060020a039092169190911781556001808301548183015560028084018054615219938386019390821615610100026000190190911604615f75565b50905050603c6001820381548110151561522f57fe5b6000918252602082206003909102018054600160a060020a031916815560018101829055906152616002830182615ff6565b5050603c8054906152769060001983016162b6565b50600160a060020a0383166000908152602860205260408120555b600019909101906150b8565b602e5481565b60255481565b603e5481565b603254600160a060020a031681565b60165481565b602f5481565b602c5481565b600e54600160a060020a031633146152e757600080fd5b604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561531d573d6000803e3d6000fd5b506044805491909103905550565b60435481565b60445481565b60055481565b60008061534983614e0d565b15156153585760009150613baf565b5060005460405160e060020a63ce9d9bd7028152600160a060020a0390911690819063ce9d9bd79061538e908690600401616dd9565b602060405180830381600087803b1580156153a857600080fd5b505af11580156153bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506153e09190810190616738565b15156153ef5760009150613baf565b50600192915050565b60008060008460ff1660270360040260020a86600160a060020a031681151561541d57fe5b04601002915060108460ff1660270360040260020a87600160a060020a031681151561544557fe5b0460100260ff1681151561545557fe5b04905080820160f860020a0260f860020a9004925050509392505050565b603254600090600160a060020a03161561552f57506035805460018181019092557fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d018054600160a060020a03191633179055603680548083019091557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b801829055603780548083018255600091909152427f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae9091015561371b565b506000919050565b6000818152601360205260408120601b54909190818080805b600f8701548410156155c457600f870180548590811061556c57fe5b6000918252602080832090910154600160a060020a0316808352601490915260409091205460058901805492985096019590859081106155a857fe5b9060005260206000200154850194508380600101945050615550565b6044548511156155db57603a805486019055615866565b600b870154601b54604051600160a060020a039092169181156108fc0291906000818181858888f19350505050158015615619573d6000803e3d6000fd5b50601b54604480548290039055600b8801546040517fde99e00421493d0d0c5935ad4b7c0809921e0890edda089a7bd0d16ddaa95ba79261566392600160a060020a031691616ef4565b60405180910390a1600093505b600f8701548410156157fc57600f870180548590811061568c57fe5b6000918252602080832090910154600160a060020a03168083526014909152604080832080549084905590519198509350879184156108fc02918591818181858888f193505050501580156156e5573d6000803e3d6000fd5b506044805483900390556040517fde99e00421493d0d0c5935ad4b7c0809921e0890edda089a7bd0d16ddaa95ba7906157219088908590616ef4565b60405180910390a16005870180548590811061573957fe5b6000918252602080832090910154600160a060020a03808a168452601890925260408084205490519195509091169184156108fc02918591818181858888f1935050505015801561578e573d6000803e3d6000fd5b50604480548390039055600160a060020a0380871660009081526018602052604090819020549051948401947fde99e00421493d0d0c5935ad4b7c0809921e0890edda089a7bd0d16ddaa95ba7926157e99216908590616ef4565b60405180910390a1600190930192615670565b601a54876003015488600401540360010160195402840381151561581c57fe5b0490506043548111151561584a5760058054602801908190556042541015615845576042546005555b615866565b6005546002900460058190556006541115615866576006546005555b5050505050505050565b600081815260136020526040902060026010820155600360068201556000600755600882905543600d55600a546001016009819055600f5410156158b45760006009555b600160305414156158c7576158c7615d55565b600d63219dc4a0306009612435565b60008054602354600160a060020a0390911691606090808060018714156158fd57601c5494505b84151561590957615b94565b600f54604051908082528060200260200182016040528015615935578160200160208202803883390190505b509350600092508291505b84821015615a84578615156159875760018460238481548110151561596157fe5b906000526020600020015481518110151561597857fe5b60209081029091010152615a79565b601d826005811061599457fe5b0154925083838151811015156159a657fe5b9060200190602002015160001415615a7957600184848151811015156159c857fe5b6020908102909101015260108054849081106159e057fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509188169163202cc5e191615a2591859190600401616ef4565b602060405180830381600087803b158015615a3f57600080fd5b505af1158015615a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250615a779190810190616738565b505b600190910190615940565b600f5491505b6000821115615b74578360018303815181101515615aa457fe5b9060200190602002015160011415615b6857600f80546000190190819055601080549091908110615ad157fe5b60009182526020909120015460108054600160a060020a03909216916000198501908110615afb57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055506010600f54815481101515615b3a57fe5b60009182526020909120018054600160a060020a03191690556010805490615b66906000198301616066565b505b60001990910190615a8a565b861515615b8e576000615b88602382616066565b50615b94565b6000601c555b50505050505050565b6026545b6000811115615cf457600560126000602460018503815481101515615bc257fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020541415615ceb576010602460018303815481101515615c0157fe5b600091825260208083209091015483546001818101865594845291909220018054600160a060020a031916600160a060020a03909216919091179055600f80549091019055602480546000198101908110615c5857fe5b60009182526020909120015460248054600160a060020a03909216916000198401908110615c8257fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055602480546000198101908110615cbd57fe5b60009182526020909120018054600160a060020a03191690556024805490615ce9906000198301616066565b505b60001901615ba1565b602454602681905515156121e5576000602581905560155550565b602f5460198054620f4240818402819004909103909155601a805480840283900490039055601b805480840283900490039055602d5490910204602d5403602d81905550565b6002603055600060158190558054600f54600160a060020a03909116915b6000821115615e5d57601080546000198401908110615d8e57fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509185169163202cc5e191615dd391859190600401616ef4565b602060405180830381600087803b158015615ded57600080fd5b505af1158015615e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250615e259190810190616738565b50601080546000198401908110615e3857fe5b60009182526020909120018054600160a060020a031916905560001990910190615d73565b6000600f5560265491505b6000821115615f6657602480546000198401908110615e8357fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509185169163202cc5e191615ec891859190600401616ef4565b602060405180830381600087803b158015615ee257600080fd5b505af1158015615ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250615f1a9190810190616738565b50602480546000198401908110615f2d57fe5b60009182526020909120018054600160a060020a03191690556024805490615f59906000198301616066565b5060001990910190615e68565b50506000602681905560255550565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615fae5780548555615fea565b82800160010185558215615fea57600052602060002091601f016020900482015b82811115615fea578254825591600101919060010190615fcf565b506133499291506162e2565b50805460018160011615610100020316600290046000825580601f1061601c57506121e5565b601f0160209004906000526020600020908101906121e591906162e2565b8154818355818111156124a7576002028160020283600052602060002091820191016124a791906162fc565b8154818355818111156124a7576000838152602090206124a79181019083016162e2565b610180604051908101604052806000600160a060020a031681526020016060815260200160608152602001600081526020016000600160a060020a0316815260200160008152602001600081526020016000600160a060020a03168152602001600081526020016060815260200160608152602001606081525090565b828054828255906000526020600020908101928215615fea579160200282015b82811115615fea578251825591602001919060010190616127565b8280548282559060005260206000209081019282156161825760005260206000209182015b82811115616182578254825591600101919060010190616167565b50613349929150616330565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106161cf57805160ff1916838001178555615fea565b82800160010185558215615fea5791820182811115615fea578251825591602001919060010190616127565b604080518082019091526060808252602082015290565b610240604051908101604052806000600160a060020a03168152602001600080191681526020016000801916815260200160008152602001600081526020016060815260200160008152602001600081526020016060815260200160008152602001606081526020016000600160a060020a031681526020016000815260200160608152602001606081526020016060815260200160008152602001606081525090565b8154818355818111156124a7576003028160030283600052602060002091820191016124a79190616354565b612baa91905b8082111561334957600081556001016162e8565b612baa91905b80821115613349578054600160a060020a031916815560006163276001830182615ff6565b50600201616302565b612baa91905b80821115613349578054600160a060020a0319168155600101616336565b612baa91905b80821115613349578054600160a060020a03191681556000600182018190556163866002830182615ff6565b5060030161635a565b600061639b82356170f3565b9392505050565b6000601f820183136163b357600080fd5b81356163c66163c1826170a0565b617079565b915081818352602084019350602081019050838560208402820111156163eb57600080fd5b60005b838110156164175781616401888261638f565b84525060209283019291909101906001016163ee565b5050505092915050565b6000601f8201831361643257600080fd5b81356164406163c1826170a0565b9150818183526020840193506020810190508385602084028201111561646557600080fd5b60005b83811015616417578161647b8882616519565b8452506020928301929190910190600101616468565b6000601f820183136164a257600080fd5b81356164b06163c1826170a0565b915081818352602084019350602081019050838560208402820111156164d557600080fd5b60005b8381101561641757816164eb8882616519565b84525060209283019291909101906001016164d8565b600061639b82356170ff565b600061639b82516170ff565b600061639b8235612baa565b600061639b8251612baa565b6000601f8201831361654257600080fd5b81356165506163c1826170c1565b9150808252602083016020830185838301111561656c57600080fd5b6150aa83828461710a565b600061639b8235617104565b60006020828403121561659557600080fd5b60006165a1848461638f565b949350505050565b600080604083850312156165bc57600080fd5b60006165c8858561638f565b925050602083013567ffffffffffffffff8111156165e557600080fd5b6165f185828601616531565b9150509250929050565b6000806040838503121561660e57600080fd5b600061661a858561638f565b92505060206165f185828601616519565b6000806000806080858703121561664157600080fd5b600061664d878761638f565b945050602061665e87828801616577565b935050604061666f87828801616519565b925050606061668087828801616519565b91505092959194509250565b6000806000606084860312156166a157600080fd5b60006166ad868661638f565b93505060206166be86828701616577565b92505060406166cf86828701616577565b9150509250925092565b600080604083850312156166ec57600080fd5b823567ffffffffffffffff81111561670357600080fd5b61670f858286016163a2565b925050602083013567ffffffffffffffff81111561672c57600080fd5b6165f185828601616491565b60006020828403121561674a57600080fd5b60006165a1848461650d565b60006020828403121561676857600080fd5b60006165a18484616519565b60006020828403121561678657600080fd5b60006165a18484616525565b600080600080600080600060e0888a0312156167ad57600080fd5b60006167b98a8a616519565b975050602088013567ffffffffffffffff8111156167d657600080fd5b6167e28a828b01616421565b965050604088013567ffffffffffffffff8111156167ff57600080fd5b61680b8a828b01616491565b955050606088013567ffffffffffffffff81111561682857600080fd5b6168348a828b01616491565b945050608088013567ffffffffffffffff81111561685157600080fd5b61685d8a828b01616491565b93505060a061686e8a828b0161638f565b92505060c061687f8a828b01616519565b91505092959891949750929550565b600080604083850312156168a157600080fd5b600061661a8585616519565b6000806000606084860312156168c257600080fd5b60006168ce8686616519565b93505060206168df86828701616519565b92505060406166cf86828701616501565b6168f9816170f3565b82525050565b600061690a826170ef565b80845260208401935061691c836170e9565b60005b8281101561694c576169328683516168f0565b61693b826170e9565b60209690960195915060010161691f565b5093949350505050565b6000616961826170ef565b808452602084019350616973836170e9565b60005b8281101561694c576169898683516168f0565b616992826170e9565b602096909601959150600101616976565b60006169ae826170ef565b808452602084019350836020820285016169c7856170e9565b60005b848110156169fe5783830388526169e2838351616ab6565b92506169ed826170e9565b6020989098019791506001016169ca565b50909695505050505050565b6000616a15826170ef565b808452602084019350616a27836170e9565b60005b8281101561694c57616a3d868351616aad565b616a46826170e9565b602096909601959150600101616a2a565b6000616a62826170ef565b808452602084019350616a74836170e9565b60005b8281101561694c57616a8a868351616aad565b616a93826170e9565b602096909601959150600101616a77565b6168f9816170ff565b6168f981612baa565b6000616ac1826170ef565b808452616ad5816020860160208601617116565b616ade81617146565b9093016020019392505050565b8051600090610240840190616b0085826168f0565b506020830151616b136020860182616aad565b506040830151616b266040860182616aad565b506060830151616b396060860182616aad565b506080830151616b4c6080860182616aad565b5060a083015184820360a0860152616b648282616a57565b91505060c0830151616b7960c0860182616aad565b5060e0830151616b8c60e0860182616aad565b50610100830151848203610100860152616ba68282616a57565b915050610120830151616bbd610120860182616aad565b50610140830151848203610140860152616bd78282616a57565b915050610160830151616bee6101608601826168f0565b50610180830151616c03610180860182616aad565b506101a08301518482036101a0860152616c1d8282616956565b9150506101c08301518482036101c0860152616c398282616a57565b9150506101e08301518482036101e0860152616c558282616956565b915050610200830151616c6c610200860182616aad565b50610220830151848203610220860152616c868282616956565b95945050505050565b8051604080845260009190840190616ca78282616a57565b91505060208301518482036020860152616c868282616a57565b8051600090610180840190616cd685826168f0565b5060208301518482036020860152616cee8282616a57565b91505060408301518482036040860152616d088282616a57565b9150506060830151616d1d6060860182616aad565b506080830151616d3060808601826168f0565b5060a0830151616d4360a0860182616aad565b5060c0830151616d5660c0860182616aad565b5060e0830151616d6960e08601826168f0565b50610100830151616d7e610100860182616aad565b50610120830151848203610120860152616d988282616a57565b915050610140830151848203610140860152616db48282616956565b915050610160830151848203610160860152616c868282616956565b6168f981617104565b60208101616de782846168f0565b92915050565b60408101616dfb82856168f0565b61639b60208301846168f0565b60608101616e1682866168f0565b616e2360208301856168f0565b6165a16040830184616aad565b6101608101616e3f828e6168f0565b616e4c602083018d616aad565b616e59604083018c616aad565b616e66606083018b616aad565b616e73608083018a616aad565b616e8060a0830189616aad565b616e8d60c0830188616aad565b616e9a60e0830187616aad565b616ea86101008301866168f0565b616eb6610120830185616aad565b616ec4610140830184616aad565b9c9b505050505050505050505050565b60408101616ee282856168f0565b81810360208301526165a18184616ab6565b60408101616f0282856168f0565b61639b6020830184616aad565b60608101616f1d82866168f0565b616f2a6020830185616aad565b8181036040830152616c868184616ab6565b60a08101616f4a82886168f0565b616f576020830187616aad565b616f646040830186616dd0565b616f716060830185616aad565b616f7e6080830184616aad565b9695505050505050565b6020808252810161639b81846168ff565b60408082528101616faa81856168ff565b905081810360208301526165a181846169a3565b60808082528101616fcf81876168ff565b90508181036020830152616fe38186616a0a565b90508181036040830152616ff78185616a0a565b90508181036060830152616f7e8184616a0a565b60208101616de78284616aa4565b60208101616de78284616aad565b6020808252810161639b8184616ab6565b6020808252810161639b8184616aeb565b6020808252810161639b8184616c8f565b6020808252810161639b8184616cc1565b60208101616de78284616dd0565b60405181810167ffffffffffffffff8111828210171561709857600080fd5b604052919050565b600067ffffffffffffffff8211156170b757600080fd5b5060209081020190565b600067ffffffffffffffff8211156170d857600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b60ff1690565b82818337506000910152565b60005b83811015617131578181015183820152602001617119565b83811115617140576000848401525b50505050565b601f01601f1916905600a265627a7a7230582039c20132bf9279401352a51dca8580d6fdaaa9fde1994ecc72ce0f1ef8e240e66c6578706572696d656e74616cf50037")
			String subchainBaseCode,

			@ApiParam(value="erc20代币与子链代币兑换比率,默认为1",required=true)@RequestParam(defaultValue="1") String subchainBaseErcRate,

			@ApiParam(value="子链最少scs数，1、3、5、7选择",required=true)@RequestParam String subchainBaseMin,

			@ApiParam(value="子链最多scs数，11、21、31、51、99选择",required=true)@RequestParam String subchainBaseMax,

			@ApiParam(value="周期数，40~500之间",required=true)@RequestParam String subchainBaseFlushRound,

			@ApiParam(value="注册为monitor最少押金，合约中默认为1MOAC",required=true)@RequestParam(defaultValue="1") String subchainBaseMonitorBond,

			@ApiParam(value="vnode信息列表,如："
					+ "[{\"vnodeUrl\":\"192.168.2.124:50062\",\"vnodeAddress\":\"0x3b712f8cdb68353bf12b1e665cd86a5774816701\"},"
					+ "{\"vnodeUrl\":\"192.168.2.117:50062\",\"vnodeAddress\":\"0x29c43903054cfc3bd36f5b57d24360e4c6e65342\"}]",required=true)
			@RequestParam String vnode,

			@ApiParam(value="scs信息（默认会从管理账户给每个scs转入1个MOAC作为gas使用），如："
					+ "[{\"scsAddress\":\"b08253ff1f9315ea8a4ea02ab0d44272b6ce0caa\"},"
					+ "{\"scsAddress\":\"c9e6e1d3eb97a3b98d1a80b7bdeccbfc43ee82d8\"}]",required=true)
			@RequestParam String scs,

			@ApiParam(value="子链初始化充入MOAC币数量,默认为1",required=true)@RequestParam(defaultValue="1") String addFund
			) throws Exception {


		return moacSubchainService.deploy(accessToken,walletId,accountId,payPsw,via,vnodeCode,vnodeBmin,subchainProtocolBaseCode,
				subchainProtocolName,subchainProtocolBmin,subchainProtocolType,erc20Code,subchainBaseCode,
				subchainBaseErcRate,subchainBaseMin,subchainBaseMax,subchainBaseFlushRound,subchainBaseMonitorBond,
				vnode,scs,addFund);
	}


	@PostMapping("/v1/deployRand")
	@ApiOperation(value="1.2 部署子链（RandWind）")
	public ResponseEntity<ResponseBase<Map<String, String>>> deployRand(HttpServletRequest request,
				@RequestHeader String accessToken,
				@RequestHeader String walletId,
				@ApiParam(value="账户id,确保积分余额充足",required=true)@RequestParam String accountId,

				@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,

				@ApiParam(value="子链收益账户地址",required=true)@RequestParam String via,

				@ApiParam(value="vnode合约编码,为空则使用系统默认的",required=true)
				@RequestParam(defaultValue="60806040523480156200001157600080fd5b506040516020806200189a83398101604052516200002e6200021e565b6000600281905560038390558082526020808301828152600160408086018281526032430160608801908152600019608089019081528351808801855288815260a08a0190815260c08a01899052845180890190955288855260e08a019490945284548086018087559590985288517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf660089099029889018054600160a060020a031916600160a060020a0390921691909117815595517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf789015591517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8880155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf9870155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa86015551805191948694620001b2937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb90920192019062000276565b5060c0820151600682018054600160a060020a031916600160a060020a0390921691909117905560e08201518051620001f691600784019160209091019062000276565b5050600280546001019055505060048054600160a060020a03191633179055506200031b9050565b610100604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001606081526020016000600160a060020a03168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b957805160ff1916838001178555620002e9565b82800160010185558215620002e9579182015b82811115620002e9578251825591602001919060010190620002cc565b50620002f7929150620002fb565b5090565b6200031891905b80821115620002f7576000815560010162000302565b90565b61156f806200032b6000396000f3006080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301fd575b81146100df578063065a13f014610112578063380e687a1461019f5780633ccfd60b146101c85780635991e0ee146101df578063676bea67146101f45780637ff8fdaa146102945780638da5cb5b146102a9578063ab920301146102da578063b08bcb1f146102fe578063cb7f82661461031c578063ce9d9bd714610331578063dcd3cab214610352578063ee8c9dd514610496578063f9eae020146104b7575b600080fd5b3480156100eb57600080fd5b50610100600160a060020a03600435166104cc565b60408051918252519081900360200190f35b34801561011e57600080fd5b5061012a6004356104de565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016457818101518382015260200161014c565b50505050905090810190601f1680156101915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ab57600080fd5b506101b461061b565b604080519115158252519081900360200190f35b3480156101d457600080fd5b506101dd6106fd565b005b3480156101eb57600080fd5b50610100610a77565b604080516020600460443581810135601f81018490048402850184019095528484526101b4948235600160a060020a039081169560248035909216953695946064949293019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750610a7d9650505050505050565b3480156102a057600080fd5b50610100610cae565b3480156102b557600080fd5b506102be610cb3565b60408051600160a060020a039092168252519081900360200190f35b3480156102e657600080fd5b506102be600160a060020a0360043516602435610cc2565b34801561030a57600080fd5b506101dd600435602435604435610cf9565b34801561032857600080fd5b50610100611074565b34801561033d57600080fd5b506101b4600160a060020a036004351661107a565b34801561035e57600080fd5b5061036a600435611129565b6040518089600160a060020a0316600160a060020a031681526020018881526020018781526020018681526020018581526020018060200184600160a060020a0316600160a060020a0316815260200180602001838103835286818151815260200191508051906020019080838360005b838110156103f35781810151838201526020016103db565b50505050905090810190601f1680156104205780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561045357818101518382015260200161043b565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3480156104a257600080fd5b506101dd600160a060020a03600435166112a8565b3480156104c357600080fd5b50610100611378565b60006020819052908152604090205481565b60606000600280541015610502576040805160208101909152600081529150610615565b6002548381151561050f57fe5b06905080151561051d576001015b61054e60018281548110151561052f57fe5b6000918252602090912060089091020154600160a060020a031661107a565b1561060357600180548290811061056157fe5b6000918252602091829020600760089092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105f75780601f106105cc576101008083540402835291602001916105f7565b820191906000526020600020905b8154815290600101906020018083116105da57829003601f168201915b50505050509150610615565b60408051602081019091526000815291505b50919050565b336000908152602081905260408120548190811061063857600080fd5b5033600081815260208190526040902054600180549192918390811061065a57fe5b6000918252602090912060089091020154600160a060020a03161461067e57600080fd5b60018080548390811061068d57fe5b9060005260206000209060080201600201541415156106ab57600080fd5b436001828154811015156106bb57fe5b6000918252602090912060046008909202010155600260018054839081106106df57fe5b906000526020600020906008020160020181905550600191505b5090565b336000908152602081905260408120548190811061071a57600080fd5b3360008181526020819052604090205460018054919450908490811061073c57fe5b6000918252602090912060089091020154600160a060020a03161461076057600080fd5b6002600180548490811061077057fe5b9060005260206000209060080201600201541480156107b257506121c060018381548110151561079c57fe5b9060005260206000209060080201600401540143115b15610a735760018054839081106107c557fe5b60009182526020909120600160089092020181015460028054600019019081905582549193509081106107f457fe5b600091825260209091206008909102015460018054600160a060020a03909216918490811061081f57fe5b906000526020600020906008020160000160006101000a815481600160a060020a030219169083600160a060020a03160217905550600160025481548110151561086557fe5b90600052602060002090600802016001015460018381548110151561088657fe5b90600052602060002090600802016001018190555060016002548154811015156108ac57fe5b9060005260206000209060080201600301546001838154811015156108cd57fe5b90600052602060002090600802016003018190555060016002548154811015156108f357fe5b90600052602060002090600802016004015460018381548110151561091457fe5b906000526020600020906008020160040181905550600160025481548110151561093a57fe5b906000526020600020906008020160070160018381548110151561095a57fe5b9060005260206000209060080201600701908054600181600116156101000203166002900461098a92919061137e565b50600160025481548110151561099c57fe5b6000918252602082206008909102018054600160a060020a031916815560018101829055600281018290556003810182905560048101829055906109e360058301826113ff565b600682018054600160a060020a0319169055610a036007830160006113ff565b505081600080600185815481101515610a1857fe5b60009182526020808320600890920290910154600160a060020a0316835282019290925260409081018220929092559051339183156108fc02918491818181858888f19350505050158015610a71573d6000803e3d6000fd5b505b5050565b60025481565b6000610a87611446565b600160a060020a038616600090815260208190526040902054158015610ab95750600354670de0b6b3a7640000023410155b1515610ac457600080fd5b600160a060020a038616815234602082015260016040820190815260324301606083019081526000196080840190815260a08401868152600160a060020a0389811660c087015260e086018990526001805480820180835560009290925287517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf660089092029182018054600160a060020a031916919094161783556020808901517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf783015596517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf882015594517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf986015592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa85015590518051929486949293610c36937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb01929091019061149e565b5060c0820151600682018054600160a060020a031916600160a060020a0390921691909117905560e08201518051610c7891600784019160209091019061149e565b505060028054600160a060020a038a16600090815260208190526040902081905560019081019091559350505050949350505050565b603281565b600454600160a060020a031681565b600560205281600052604060002081815481101515610cdd57fe5b600091825260209091200154600160a060020a03169150829050565b6004546000908190600160a060020a03163314610d1557600080fd5b600085118015610d26575060058511155b1515610d3157600080fd5b600084118015610d42575060025484105b1515610d4d57600080fd5b6002546000198585010192508210610d685760016002540391505b50805b83811061106d578460056000600184815481101515610d8657fe5b60009182526020808320600890920290910154600160a060020a03168352820192909252604001902054106110645760056000600183815481101515610dc857fe5b60009182526020808320600890920290910154600160a060020a031683528201929092526040018120610dfa9161150c565b600280546000190190819055600180549091908110610e1557fe5b600091825260209091206008909102015460018054600160a060020a039092169183908110610e4057fe5b906000526020600020906008020160000160006101000a815481600160a060020a030219169083600160a060020a031602179055506001600254815481101515610e8657fe5b906000526020600020906008020160010154600182815481101515610ea757fe5b9060005260206000209060080201600101819055506001600254815481101515610ecd57fe5b906000526020600020906008020160030154600182815481101515610eee57fe5b9060005260206000209060080201600301819055506001600254815481101515610f1457fe5b906000526020600020906008020160040154600182815481101515610f3557fe5b9060005260206000209060080201600401819055506001600254815481101515610f5b57fe5b9060005260206000209060080201600701600182815481101515610f7b57fe5b90600052602060002090600802016007019080546001816001161561010002031660029004610fab92919061137e565b506001600254815481101515610fbd57fe5b6000918252602082206008909102018054600160a060020a0319168155600181018290556002810182905560038101829055600481018290559061100460058301826113ff565b600682018054600160a060020a03191690556110246007830160006113ff565b50508060008060018481548110151561103957fe5b60009182526020808320600890920290910154600160a060020a031683528201929092526040019020555b60001901610d6b565b5050505050565b60035481565b600160a060020a03811660009081526020819052604081205415156110a157506000611124565b6001600160a060020a0383166000908152602081905260409020546001805490919081106110cb57fe5b9060005260206000209060080201600201541480156111215750600160a060020a03821660009081526020819052604090205460018054439290811061110d57fe5b906000526020600020906008020160030154105b90505b919050565b600180548290811061113757fe5b600091825260209182902060089091020180546001808301546002808501546003860154600487015460058801805460408051601f6000199a841615610100029a909a01909216969096049788018b90048b0281018b01909552868552600160a060020a03909716995093979196909593949093918301828280156111fd5780601f106111d2576101008083540402835291602001916111fd565b820191906000526020600020905b8154815290600101906020018083116111e057829003601f168201915b50505050600683015460078401805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181529596600160a060020a03909416959394509083018282801561129e5780601f106112735761010080835404028352916020019161129e565b820191906000526020600020905b81548152906001019060200180831161128157829003601f168201915b5050505050905088565b600160a060020a03811660009081526005602081905260408220541015610a73575060005b600160a060020a03821660009081526005602052604090205481101561133c57600160a060020a038216600090815260056020526040902080543391908390811061131457fe5b600091825260209091200154600160a060020a0316141561133457610a73565b6001016112cd565b600160a060020a0382166000908152600560209081526040822080546001810182559083529120018054600160a060020a031916331790555050565b6121c081565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113b757805485556113f3565b828001600101855582156113f357600052602060002091601f016020900482015b828111156113f35782548255916001019190600101906113d8565b506106f9929150611526565b50805460018160011615610100020316600290046000825580601f106114255750611443565b601f0160209004906000526020600020908101906114439190611526565b50565b610100604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001606081526020016000600160a060020a03168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114df57805160ff19168380011785556113f3565b828001600101855582156113f3579182015b828111156113f35782518255916020019190600101906114f1565b508054600082559060005260206000209081019061144391905b61154091905b808211156106f9576000815560010161152c565b905600a165627a7a72305820facfc0a3d7a24ef5f094175d33c018fa7ffbac24eef4198c1f79bd652697a4750029")
						String vnodeCode,

				@ApiParam(value="注册vnode最少押金,默认为0",required=true)@RequestParam(defaultValue="0") String vnodeBmin,

				@ApiParam(value="子链协议合约编码",required=true)
				@RequestParam(defaultValue="60806040523480156200001157600080fd5b50604051620017323803806200173283398101604090815281516020808401519284015160006002559190930180519093620000539160039186019062000064565b506004919091556008555062000109565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000a757805160ff1916838001178555620000d7565b82800160010185558215620000d7579182015b82811115620000d7578251825591602001919060010190620000ba565b50620000e5929150620000e9565b5090565b6200010691905b80821115620000e55760008155600101620000f0565b90565b61161980620001196000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631aa887ca811461014d578063202cc5e1146101be578063365bfb9e146101f6578063380e687a1461020d5780633ccfd60b1461022257806341205305146102375780634420e486146102585780636220fb1d1461026c57806364f3ef461461029c57806367bd927e146102b35780636e62adcb146102e657806376a95e88146102fb57806399f874d8146103355780639adea8071461034a578063aab3193314610371578063b8a167e6146103a5578063bd8d4bd8146103bd578063c3a919d0146103d2578063c9a856a3146103f3578063cb7f826614610449578063ce9d9bd71461045e578063de42f13c1461047f578063e17095a41461049a578063f21e6f7a146104b2578063f9eae0201461053c575b600080fd5b34801561015957600080fd5b5061016e600160a060020a0360043516610551565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101aa578181015183820152602001610192565b505050509050019250505060405180910390f35b3480156101ca57600080fd5b506101e2600160a060020a0360043516602435610647565b604080519115158252519081900360200190f35b34801561020257600080fd5b5061020b6108f3565b005b34801561021957600080fd5b506101e2610907565b34801561022e57600080fd5b5061020b6109ac565b34801561024357600080fd5b5061016e600160a060020a0360043516610a3f565b6101e2600160a060020a0360043516610b14565b34801561027857600080fd5b506101e2600160a060020a036004351660243560ff60443516606435608435610c3d565b6101e2600160a060020a0360043516602435610df7565b3480156102bf57600080fd5b506102d4600160a060020a03600435166110dc565b60408051918252519081900360200190f35b3480156102f257600080fd5b506102d46110ee565b34801561030757600080fd5b5061031c600160a060020a03600435166110f4565b6040805192835260208301919091528051918290030190f35b34801561034157600080fd5b506102d461110d565b34801561035657600080fd5b506101e2600160a060020a0360043581169060243516611112565b34801561037d57600080fd5b5061038960043561122c565b60408051600160a060020a039092168252519081900360200190f35b3480156103b157600080fd5b5061020b600435611254565b3480156103c957600080fd5b506102d4611266565b3480156103de57600080fd5b506102d4600160a060020a036004351661126c565b3480156103ff57600080fd5b50610414600160a060020a036004351661127e565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561045557600080fd5b506102d46112b7565b34801561046a57600080fd5b506101e2600160a060020a03600435166112bd565b34801561048b57600080fd5b506102d4600435602435611308565b3480156104a657600080fd5b506102d460043561136a565b3480156104be57600080fd5b506104c76113b2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054857600080fd5b506102d4611440565b60608060006001600085600160a060020a0316600160a060020a03168152602001908152602001600020600101546040519080825280602002602001820160405280156105a8578160200160208202803883390190505b509150600090505b600160a060020a0384166000908152600160208190526040909120015481101561064057600160a060020a03841660009081526001602052604090206002018054829081106105fb57fe5b6000918252602090912001548251600160a060020a039091169083908390811061062157fe5b600160a060020a039092166020928302909101909101526001016105b0565b5092915050565b6000805b600160a060020a038416600090815260016020819052604090912001548110156108e957600160a060020a038416600090815260016020526040902060020180543391908390811061069957fe5b600091825260209091200154600160a060020a03161480156106ed5750600160a060020a03841660009081526001602052604090206003018054849190839081106106e057fe5b9060005260206000200154145b156108e157600160a060020a0384166000908152600160208190526040909120805485900381559081018054600019019081905560029091018054909190811061073357fe5b6000918252602080832090910154600160a060020a0387811684526001909252604090922060020180549190921691908390811061076d57fe5b60009182526020808320919091018054600160a060020a031916600160a060020a03948516179055918616815260019182905260409020908101546003909101805490919081106107ba57fe5b6000918252602080832090910154600160a060020a0387168352600190915260409091206003018054839081106107ed57fe5b6000918252602080832090910192909255600160a060020a0386168152600191829052604090209081015460029091018054909190811061082a57fe5b600091825260208083209091018054600160a060020a0319169055600160a060020a038616825260019081905260409091209081015460039091018054909190811061087257fe5b60009182526020808320909101829055600160a060020a038616825260019052604090206002018054906108aa9060001983016115b0565b50600160a060020a03841660009081526001602052604090206003018054906108d79060001983016115b0565b5060019150610640565b60010161064b565b5060009392505050565b336000908152600560205260409020439055565b3360009081526020819052604081206002015460011461092657600080fd5b33600090815260016020819052604090912001541561094457600080fd5b3360008181526020819052604090204360048201556002908101819055805460001901905561097290611446565b6040805133815290517f4803dcd528253b802a22997f7a3b15bcc6be53c1f2ba8f110aa26c25d652a68f9181900360200190a15060015b90565b6002336000908152602081905260409020600201541480156109e35750336000908152602081905260409020600401546121c00143115b15610a3d57336000908152602081905260408082206004600282015580546001909101549151600160a060020a039091169282156108fc02929190818181858888f19350505050158015610a3b573d6000803e3d6000fd5b505b565b60608060006001600085600160a060020a0316600160a060020a0316815260200190815260200160002060010154604051908082528060200260200182016040528015610a96578160200160208202803883390190505b509150600090505b600160a060020a0384166000908152600160208190526040909120015481101561064057600160a060020a0384166000908152600160205260409020600301805482908110610ae957fe5b90600052602060002001548282815181101515610b0257fe5b60209081029091010152600101610a9e565b600160a060020a0381166000908152602081905260408120600201541580610b5757506001600160a060020a038316600090815260208190526040902060020154145b8015610b6f5750600454670de0b6b3a7640000023410155b1515610b7a57600080fd5b610b838261153e565b600160a060020a03821660008181526020819052604090208054600160a060020a0319169091178155600201541515610bf457600160a060020a0382166000908152602081905260409020436005016003820155600019600482015560028054600190810190915534910155610c16565b600160a060020a03821660009081526020819052604090206001018054340190555b6001600160a060020a0383166000908152602081905260409020600201555060015b919050565b600080610c49876112bd565b1515610c585760009150610ded565b604080516c01000000000000000000000000600160a060020a038a168102825233026014820152905160029160288082019260209290919082900301816000865af1158015610cab573d6000803e3d6000fd5b5050506040513d6020811015610cc057600080fd5b5051604080516000808252602082810180855285905260ff8a168385015260608301899052608083018890529251939450600160a060020a038b169360019360a0808501949193601f19840193928390039091019190865af1158015610d2a573d6000803e3d6000fd5b50505060206040510351600160a060020a0316141515610d4d5760009150610ded565b600160a060020a0387166000908152600160208181526040808420549184905290922001549087011115610d845760009150610ded565b600160a060020a0387166000818152600160208181526040832080548b0181556002810180548085018255908552828520018054600160a060020a0319163317905560038101805480850182559085529184209091018a90559290915290810180548201905591505b5095945050505050565b6000805b600160a060020a038416600090815260016020819052604090912001548110156108e957600160a060020a0384166000908152600160205260409020600201805433919083908110610e4957fe5b600091825260209091200154600160a060020a0316148015610e9d5750600160a060020a0384166000908152600160205260409020600301805484919083908110610e9057fe5b9060005260206000200154145b156110d457600160a060020a03841660009081526001602081905260409091208054859003815590810180546000190190819055600290910180549091908110610ee357fe5b6000918252602080832090910154600160a060020a03878116845260019092526040909220600201805491909216919083908110610f1d57fe5b60009182526020808320919091018054600160a060020a031916600160a060020a0394851617905591861681526001918290526040902090810154600390910180549091908110610f6a57fe5b6000918252602080832090910154600160a060020a038716835260019091526040909120600301805483908110610f9d57fe5b6000918252602080832090910192909255600160a060020a03861681526001918290526040902090810154600290910180549091908110610fda57fe5b600091825260208083209091018054600160a060020a0319169055600160a060020a038616825260019081905260409091209081015460039091018054909190811061102257fe5b60009182526020808320909101829055600160a060020a0386168252600190526040902060020180549061105a9060001983016115b0565b50600160a060020a03841660009081526001602052604090206003018054906110879060001983016115b0565b50600160a060020a0384166000908152602081905260408082206001018054869003905551339185156108fc02918691818181858888f193505050501580156108d7573d6000803e3d6000fd5b600101610dfb565b60056020526000908152604090205481565b60025481565b6001602081905260009182526040909120805491015482565b600581565b6000805b600160a060020a038416600090815260016020819052604090912001548110156108e957600160a060020a0384811660009081526001602052604090206002018054918516918390811061116657fe5b600091825260209091200154600160a060020a03161480156111ad5750600160a060020a038316600090815260066020908152604080832054600590925290912054439101105b1561122457600160a060020a03841660009081526001602052604090206003018054829081106111d957fe5b6000918252602080832090910154600160a060020a03871683526001918290526040909220805492909203825581018054600019019081905560029091018054909190811061073357fe5b600101611116565b600780548290811061123a57fe5b600091825260209091200154600160a060020a0316905081565b33600090815260066020526040902055565b60085481565b60066020526000908152604090205481565b60006020819052908152604090208054600182015460028301546003840154600490940154600160a060020a0390931693919290919085565b60045481565b600160a060020a03811660009081526020819052604081206002015460011480156113025750600160a060020a03821660009081526020819052604090206003015443115b92915050565b600080603283101561131957603292505b82600254101561132c5760ff9150610640565b506002546103e890840204828110156113425750815b60028054826101000281151561135457fe5b0460010181151561136157fe5b04949350505050565b600081151561137b57506000610c38565b600254821061138c575060ff610c38565b60028054836101000281151561139e57fe5b046001018115156113ab57fe5b0492915050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156114385780601f1061140d57610100808354040283529160200191611438565b820191906000526020600020905b81548152906001019060200180831161141b57829003601f168201915b505050505081565b6121c081565b600754805b60008111156115395782600160a060020a031660076001830381548110151561147057fe5b600091825260209091200154600160a060020a031614156115305760078054600019840190811061149d57fe5b60009182526020909120015460078054600160a060020a039092169160001984019081106114c757fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560078054600019840190811061150257fe5b60009182526020909120018054600160a060020a0319169055600780549061152e9060001983016115b0565b505b6000190161144b565b505050565b600160a060020a0381166000908152602081905260409020600201541515610a3b57600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018054600160a060020a038316600160a060020a031990911617905550565b815481835581811115611539576000838152602090206115399181019083016109a991905b808211156115e957600081556001016115d5565b50905600a165627a7a723058205158e1ec50866a117ed4013f3f187e38aab3311561f478f86733c09e08040a550029")
						String scsProtocolBaseCode,

				@ApiParam(value="子链协议合约名称",required=true)@RequestParam String scsProtocolName,

				@ApiParam(value="scs注册最少押金,最少填1",required=true)@RequestParam(defaultValue="1") String scsProtocolBmin,

				@ApiParam(value="erc20合约编码",required=true)@RequestParam String erc20Code,

				@ApiParam(value="子链协议合约编码",required=true)
				@RequestParam(defaultValue="608060405260006019556000601a556000601b556000601c556000601d556000601e556032601f553480156200003457600080fd5b5060405160208062002e97833981018060405262000056919081019062000095565b60028112156200006557600080fd5b60195560168054600160a060020a03191633179055620000c1565b60006200008e8251620000be565b9392505050565b600060208284031215620000a857600080fd5b6000620000b6848462000080565b949350505050565b90565b612dc680620000d16000396000f3006080604052600436106102a85763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663029471e081146102ad5780630b927b32146102d857806313af4035146103055780631a1efdaf146103275780631c2c6b4d1461033c5780632512b9471461035c578063256fec8814610389578063282c0b8f146103ab5780632a292dc7146103cb5780632a56ce43146103f8578063307f201a146104185780633430cadd146104385780633891c320146104585780633ed4f1161461047857806350859fd91461048d578063514cac35146104ad57806351ed07e4146104c257806356a09939146104e257806359495523146105025780635e296853146105225780636911af6514610542578063706f6222146105625780637457b35514610582578063778ada10146105a25780637ce54cc8146105d55780637d0f6c77146105f55780637e2a1ed31461060a57806380c3fe621461062a5780638b051563146106575780638da5cb5b1461068457806391e4d7f7146106995780639496db22146106b957806394a629be146106d9578063984624ba146106f957806398b72f981461070e57806399ba5a921461072e5780639c081852146107435780639d6e8c6c146107635780639f1e5f0e14610783578063a5fa814f14610798578063b5ef046e146107c5578063bbc3d237146107e5578063beb92f55146107fa578063ca6c8a311461081a578063cc30a60f1461083a578063cd1994201461084f578063d0bef4ae1461086f578063d89da49c1461088f578063dbccad54146108a4578063de79b856146108c4578063e4c1de98146108e4578063ed0c88ef14610904578063eefb422714610926578063ef0fb55814610946578063f06dc92d14610966578063fc054aa814610986578063fc9c8d39146109a6575b600080fd5b3480156102b957600080fd5b506102c26109bb565b6040516102cf9190612c7b565b60405180910390f35b3480156102e457600080fd5b506102f86102f33660046127d2565b610a0c565b6040516102cf9190612bc5565b34801561031157600080fd5b506103256103203660046125d3565b610a21565b005b34801561033357600080fd5b50610325610a5a565b34801561034857600080fd5b506102c26103573660046127d2565b610b06565b34801561036857600080fd5b5061037c61037736600461277f565b610b18565b6040516102cf9190612ba3565b34801561039557600080fd5b5061039e610bc3565b6040516102cf9190612b63565b3480156103b757600080fd5b506103256103c6366004612633565b610bd2565b3480156103d757600080fd5b506103eb6103e636600461277f565b610ec7565b6040516102cf9190612bb4565b34801561040457600080fd5b506102c26104133660046125d3565b610f6b565b34801561042457600080fd5b5061039e6104333660046127d2565b610f7d565b34801561044457600080fd5b506102f86104533660046128ed565b610f98565b34801561046457600080fd5b506103256104733660046127d2565b610fb8565b34801561048457600080fd5b506102c2611033565b34801561049957600080fd5b506102c26104a83660046125d3565b611039565b3480156104b957600080fd5b506102c26110de565b3480156104ce57600080fd5b5061039e6104dd3660046127d2565b6110e4565b3480156104ee57600080fd5b506103256104fd36600461291d565b6110ff565b34801561050e57600080fd5b506102c261051d3660046127d2565b611312565b34801561052e57600080fd5b506102c261053d3660046127d2565b611324565b34801561054e57600080fd5b506102c261055d3660046125f9565b611336565b34801561056e57600080fd5b5061032561057d3660046127f0565b611353565b34801561058e57600080fd5b506102c261059d3660046125d3565b61138f565b3480156105ae57600080fd5b506105c26105bd3660046127d2565b6113a1565b6040516102cf9796959493929190612bf2565b3480156105e157600080fd5b506103256105f03660046125d3565b6116ab565b34801561060157600080fd5b506102c261183d565b34801561061657600080fd5b506102c26106253660046125d3565b611843565b34801561063657600080fd5b5061064a6106453660046125d3565b611862565b6040516102cf9190612be1565b34801561066357600080fd5b506106776106723660046127d2565b61190d565b6040516102cf9190612c89565b34801561069057600080fd5b5061039e611c40565b3480156106a557600080fd5b506102f86106b43660046127d2565b611c4f565b3480156106c557600080fd5b5061064a6106d43660046125d3565b611c78565b3480156106e557600080fd5b506102c26106f43660046127d2565b611cec565b34801561070557600080fd5b506102c2611cfe565b34801561071a57600080fd5b506102c26107293660046125d3565b611d04565b34801561073a57600080fd5b506102c2611d16565b34801561074f57600080fd5b506102f861075e3660046128ed565b611d1c565b34801561076f57600080fd5b506102f861077e3660046127d2565b611d3c565b34801561078f57600080fd5b5061039e611d4f565b3480156107a457600080fd5b506107b86107b336600461284b565b611d5f565b6040516102cf9190612bd3565b3480156107d157600080fd5b506102c26107e03660046125d3565b611dcc565b3480156107f157600080fd5b506102c2611dde565b34801561080657600080fd5b506103256108153660046125d3565b611de4565b34801561082657600080fd5b5061032561083536600461288e565b611e1d565b34801561084657600080fd5b506102c2611ea9565b34801561085b57600080fd5b5061032561086a3660046127d2565b611eaf565b34801561087b57600080fd5b506102c261088a3660046127d2565b611ecb565b34801561089b57600080fd5b5061039e611edd565b3480156108b057600080fd5b506102f86108bf366004612732565b611eec565b3480156108d057600080fd5b506103256108df3660046125d3565b611f12565b3480156108f057600080fd5b506103256108ff3660046125d3565b611f87565b34801561091057600080fd5b5061091961208b565b6040516102cf9190612b92565b34801561093257600080fd5b506103256109413660046125f9565b612163565b34801561095257600080fd5b506103256109613660046127d2565b6121c0565b34801561097257600080fd5b506103256109813660046125d3565b6121f3565b34801561099257600080fd5b506102c26109a13660046125d3565b61225b565b3480156109b257600080fd5b5061039e612276565b600080805b601a54811215610a06576001600082815260026020908152604080832054600160a060020a03168352600390915290205414156109fe576001909101905b6001016109c0565b50919050565b600c6020526000908152604090205460ff1681565b601654600160a060020a03163314610a3857600080fd5b60168054600160a060020a031916600160a060020a0392909216919091179055565b601654600160a060020a03163314610a7157600080fd5b6040517f219dc4a0000000000000000000000000000000000000000000000000000000008152600d9063219dc4a090610ab1903090600f90600401612b77565b602060405180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0391908101906127b4565b50565b600b6020526000908152604090205481565b60606000606060008451925082604051908082528060200260200182016040528015610b4e578160200160208202803883390190505b509150600090505b8451811015610bbb576000808683815181101515610b7057fe5b90602001906020020151600160a060020a0316600160a060020a03168152602001908152602001600020548282815181101515610ba957fe5b60209081029091010152600101610b56565b509392505050565b601854600160a060020a031681565b33600090815260036020526040812054600114610bee57600080fd5b84836040518083805190602001908083835b60208310610c1f5780518252601f199092019160209182019101610c00565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c675780518252601f199092019160209182019101610c48565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000818152600c909252929020549195505060ff16159250610cb391505057600080fd5b601c80546000908152600d602090815260408083208054600160a060020a0319908116600160a060020a038e1690811790925585548552600e8452828520805433921682179055825160e0810184528c81528085018c90528084018b9052606081018a90526080810189905260a081019290925260c082015293548352600f8252909120825180519192610d4c92849290910190612285565b506020828101518051610d659260018501920190612285565b5060408201518051610d81916002840191602090910190612285565b5060608201518051610d9d916003840191602090910190612285565b5060808201518051610db9916004840191602090910190612285565b5060a0820151600582018054600160a060020a0319908116600160a060020a039384161790915560c0909301516006909201805490931691161790556000818152600c60209081526040808320805460ff19166001908117909155601c805460119094529190932082905591019055600d63219dc4a030600f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e6b929190612b77565b602060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ebd91908101906127b4565b5050505050505050565b60606000606060008451925082604051908082528060200260200182016040528015610efd578160200160208202803883390190505b509150600090505b8451811015610bbb57600160008683815181101515610f2057fe5b90602001906020020151600160a060020a0316600160a060020a03168152602001908152602001600020548282815181101515610f5957fe5b60209081029091010152600101610f05565b60126020526000908152604090205481565b600e60205260009081526040902054600160a060020a031681565b600a60209081526000928352604080842090915290825290205460ff1681565b60013360009081526003602052604090205414610fd457600080fd5b600081815260076020908152604080832033845290915290205460ff1615610ffb57600080fd5b60009081526006602090815260408083208054600190810190915560078352818420338552909252909120805460ff19169091179055565b601f5481565b6017546040517f50859fd9000000000000000000000000000000000000000000000000000000008152600091600160a060020a03169081906350859fd990611085908690600401612b63565b602060405180830381600087803b15801561109f57600080fd5b505af11580156110b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110d7919081019061294d565b9392505050565b601d5481565b600d60205260009081526040902054600160a060020a031681565b6000806001336000908152600360205260409020541461111e57600080fd5b6000848152600a6020908152604080832033845290915290205460ff161561114557600080fd5b506000838152600a602090815260408083203384529091529020805460ff19166001908117909155601754600160a060020a031690831515141561123557600084815260086020526040902080546001019081905560195413611230576000848152600d6020526040908190205490517f11f79f7c000000000000000000000000000000000000000000000000000000008152600160a060020a039182169350908216906311f79f7c906111fd908590600401612b63565b600060405180830381600087803b15801561121757600080fd5b505af115801561122b573d6000803e3d6000fd5b505050505b6112e2565b6000848152600960205260409020805460010190819055601954136112e2576000848152600e6020526040908190205490517f11f79f7c000000000000000000000000000000000000000000000000000000008152600160a060020a039182169350908216906311f79f7c906112af908590600401612b63565b600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b505050505b3360009081526010602052604090205484131561130c573360009081526010602052604090208490555b50505050565b60116020526000908152604090205481565b60096020526000908152604090205481565b601460209081526000928352604080842090915290825290205481565b601654600160a060020a0316331461136a57600080fd5b6000838152602080805260408083208584528252909120825161130c92840190612303565b60106020526000908152604090205481565b600f6020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529092918391908301828280156114385780601f1061140d57610100808354040283529160200191611438565b820191906000526020600020905b81548152906001019060200180831161141b57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114d65780601f106114ab576101008083540402835291602001916114d6565b820191906000526020600020905b8154815290600101906020018083116114b957829003601f168201915b50505060028085018054604080516020601f60001961010060018716150201909416959095049283018590048502810185019091528181529596959450909250908301828280156115685780601f1061153d57610100808354040283529160200191611568565b820191906000526020600020905b81548152906001019060200180831161154b57829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529495949350908301828280156115f85780601f106115cd576101008083540402835291602001916115f8565b820191906000526020600020905b8154815290600101906020018083116115db57829003601f168201915b5050505060048301805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529495949350908301828280156116885780601f1061165d57610100808354040283529160200191611688565b820191906000526020600020905b81548152906001019060200180831161166b57829003601f168201915b5050505060058301546006909301549192600160a060020a039081169216905087565b60008080600133600090815260036020526040902054146116cb57600080fd5b600160a060020a038416600090815260136020908152604080832054601d54601290935292205443955091935013801561170a5750601f54601e548403135b1561130c57600160a060020a0384166000908152601560209081526040808320858452825280832033845290915290205460ff16151561179757600160a060020a03841660008181526014602090815260408083208684528252808320805460019081019091559383526015825280832086845282528083203384529091529020805460ff191690911790555b601954600160a060020a03851660009081526014602090815260408083208684529091529020541061130c57506017546040517f11f79f7c000000000000000000000000000000000000000000000000000000008152600160a060020a039091169081906311f79f7c9061180f908790600401612b63565b600060405180830381600087803b15801561182957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b601e5481565b600160a060020a0381166000908152601060205260409020545b919050565b600160a060020a03811660009081526004602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156119015780601f106118d657610100808354040283529160200191611901565b820191906000526020600020905b8154815290600101906020018083116118e457829003601f168201915b50505050509050919050565b6119156123c5565b6000828152600f602090815260409182902082518154600260018216156101009081026000190190921604601f81018590049094028201810190945260e081018381529093919284928491908401828280156119b25780601f10611987576101008083540402835291602001916119b2565b820191906000526020600020905b81548152906001019060200180831161199557829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015611ae65780601f10611abb57610100808354040283529160200191611ae6565b820191906000526020600020905b815481529060010190602001808311611ac957829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015611b7a5780601f10611b4f57610100808354040283529160200191611b7a565b820191906000526020600020905b815481529060010190602001808311611b5d57829003601f168201915b505050918352505060048201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015611c0e5780601f10611be357610100808354040283529160200191611c0e565b820191906000526020600020905b815481529060010190602001808311611bf157829003601f168201915b50505091835250506005820154600160a060020a03908116602083015260069092015490911660409091015292915050565b601654600160a060020a031681565b601954600082815260066020526040812054909113611c705750600161185d565b506000919050565b600160a060020a03811660009081526005602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156119015780601f106118d657610100808354040283529160200191611901565b60086020526000908152604090205481565b60195481565b60036020526000908152604090205481565b601c5481565b600760209081526000928352604080842090915290825290205460ff1681565b6000908152600b60205260408120541390565b601854600160a060020a03165b90565b6020805282600052604060002060205281600052604060002081815481101515611d8557fe5b906000526020600020906020918282040191900692509250509054906101000a90047f01000000000000000000000000000000000000000000000000000000000000000281565b60136020526000908152604090205481565b601b5481565b601654600160a060020a03163314611dfb57600080fd5b60178054600160a060020a031916600160a060020a0392909216919091179055565b60013360009081526003602052604090205414611e3957611ea5565b3360009081526004602090815260409091208351611e5992850190612285565b503360009081526005602090815260409091208251611e7a92840190612285565b50601b8054600101908190553360009081526012602090815260408083209390935560139052204390555b5050565b601a5481565b601654600160a060020a03163314611ec657600080fd5b601f55565b60066020526000908152604090205481565b601754600160a060020a031690565b601560209081526000938452604080852082529284528284209052825290205460ff1681565b601754600160a060020a0316331480611f355750601654600160a060020a031633145b1515611f4057600080fd5b6001600160a060020a0382166000908152600360205260409020541415610b0357600160a060020a0316600090815260036020526040902060029055601b80546001019055565b601754600160a060020a0316331480611faa5750601654600160a060020a031633145b1515611fb557600080fd5b60188054600160a060020a031916331790556000600160a060020a038216600090815260036020526040902054141561204157601a8054600160a060020a0383166000818152600160208181526040808420869055948352600281528483208054600160a060020a03191685179055855482019095559181526003909352912055601b54601d5543601e555b6002600160a060020a0382166000908152600360205260409020541415610b035760015b600160a060020a038216600090815260036020526040902055601b54601d5543601e5550565b60606000606060008061209c6109bb565b9350836040519080825280602002602001820160405280156120c8578160200160208202803883390190505b50925060009150600090505b601a5481121561215a576001600082815260026020908152604080832054600160a060020a0316835260039091529020541415612152576000818152600260205260409020548351600160a060020a039091169084908490811061213457fe5b600160a060020a039092166020928302909101909101526001909101905b6001016120d4565b50909392505050565b601754600160a060020a03163314806121865750601654600160a060020a031633145b151561219157600080fd5b60188054600160a060020a03191633179055600160a060020a0391909116600090815260208190526040902055565b601654600160a060020a031633146121d757600080fd5b60028112156121e557600080fd5b601955601b80546001019055565b601754600160a060020a03163314806122165750601654600160a060020a031633145b151561222157600080fd5b60188054600160a060020a031916331790556001600160a060020a0382166000908152600360205260409020541415610b03576002612065565b600160a060020a031660009081526001602052604090205490565b601754600160a060020a031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122c657805160ff19168380011785556122f3565b828001600101855582156122f3579182015b828111156122f35782518255916020019190600101906122d8565b506122ff929150612415565b5090565b82805482825590600052602060002090601f016020900481019282156123b95791602002820160005b8382111561238a57835183826101000a81548160ff02191690837f010000000000000000000000000000000000000000000000000000000000000090040217905550926020019260010160208160000104928301926001030261232c565b80156123b75782816101000a81549060ff021916905560010160208160000104928301926001030261238a565b505b506122ff92915061242f565b60e06040519081016040528060608152602001606081526020016060815260200160608152602001606081526020016000600160a060020a031681526020016000600160a060020a031681525090565b611d5c91905b808211156122ff576000815560010161241b565b611d5c91905b808211156122ff57805460ff19168155600101612435565b60006110d78235612d14565b6000601f8201831361246a57600080fd5b813561247d61247882612cc1565b612c9a565b915081818352602084019350602081019050838560208402820111156124a257600080fd5b60005b838110156124ce57816124b8888261244d565b84525060209283019291909101906001016124a5565b5050505092915050565b6000601f820183136124e957600080fd5b81356124f761247882612cc1565b9150818183526020840193506020810190508385602084028201111561251c57600080fd5b60005b838110156124ce57816125328882612560565b845250602092830192919091019060010161251f565b60006110d78235612d20565b60006110d78251612d20565b60006110d78235612d25565b60006110d78235611d5c565b6000601f8201831361258957600080fd5b813561259761247882612ce2565b915080825260208301602083018583830111156125b357600080fd5b6125be838284612d4a565b50505092915050565b60006110d78251611d5c565b6000602082840312156125e557600080fd5b60006125f1848461244d565b949350505050565b6000806040838503121561260c57600080fd5b6000612618858561244d565b92505060206126298582860161256c565b9150509250929050565b60008060008060008060c0878903121561264c57600080fd5b6000612658898961244d565b965050602087013567ffffffffffffffff81111561267557600080fd5b61268189828a01612578565b955050604087013567ffffffffffffffff81111561269e57600080fd5b6126aa89828a01612578565b945050606087013567ffffffffffffffff8111156126c757600080fd5b6126d389828a01612578565b935050608087013567ffffffffffffffff8111156126f057600080fd5b6126fc89828a01612578565b92505060a087013567ffffffffffffffff81111561271957600080fd5b61272589828a01612578565b9150509295509295509295565b60008060006060848603121561274757600080fd5b6000612753868661244d565b93505060206127648682870161256c565b92505060406127758682870161244d565b9150509250925092565b60006020828403121561279157600080fd5b813567ffffffffffffffff8111156127a857600080fd5b6125f184828501612459565b6000602082840312156127c657600080fd5b60006125f18484612554565b6000602082840312156127e457600080fd5b60006125f1848461256c565b60008060006060848603121561280557600080fd5b6000612811868661256c565b93505060206128228682870161256c565b925050604084013567ffffffffffffffff81111561283f57600080fd5b612775868287016124d8565b60008060006060848603121561286057600080fd5b600061286c868661256c565b935050602061287d8682870161256c565b92505060406127758682870161256c565b600080604083850312156128a157600080fd5b823567ffffffffffffffff8111156128b857600080fd5b6128c485828601612578565b925050602083013567ffffffffffffffff8111156128e157600080fd5b61262985828601612578565b6000806040838503121561290057600080fd5b600061290c858561256c565b92505060206126298582860161244d565b6000806040838503121561293057600080fd5b600061293c858561256c565b925050602061262985828601612548565b60006020828403121561295f57600080fd5b60006125f184846125c7565b61297481612d14565b82525050565b600061298582612d10565b80845260208401935061299783612d0a565b60005b828110156129c7576129ad86835161296b565b6129b682612d0a565b60209690960195915060010161299a565b5093949350505050565b60006129dc82612d10565b8084526020840193506129ee83612d0a565b60005b828110156129c757612a04868351612a7d565b612a0d82612d0a565b6020969096019591506001016129f1565b6000612a2982612d10565b808452602084019350612a3b83612d0a565b60005b828110156129c757612a51868351612a7d565b612a5a82612d0a565b602096909601959150600101612a3e565b61297481612d20565b61297481612d25565b61297481611d5c565b6000612a9182612d10565b808452612aa5816020860160208601612d56565b612aae81612d82565b9093016020019392505050565b805160e080845260009190840190612ad38282612a86565b91505060208301518482036020860152612aed8282612a86565b91505060408301518482036040860152612b078282612a86565b91505060608301518482036060860152612b218282612a86565b91505060808301518482036080860152612b3b8282612a86565b91505060a0830151612b5060a086018261296b565b5060c0830151610bbb60c086018261296b565b60208101612b71828461296b565b92915050565b60408101612b85828561296b565b6110d76020830184612a7d565b602080825281016110d7818461297a565b602080825281016110d781846129d1565b602080825281016110d78184612a1e565b60208101612b718284612a6b565b60208101612b718284612a74565b602080825281016110d78184612a86565b60e08082528101612c03818a612a86565b90508181036020830152612c178189612a86565b90508181036040830152612c2b8188612a86565b90508181036060830152612c3f8187612a86565b90508181036080830152612c538186612a86565b9050612c6260a083018561296b565b612c6f60c083018461296b565b98975050505050505050565b60208101612b718284612a7d565b602080825281016110d78184612abb565b60405181810167ffffffffffffffff81118282101715612cb957600080fd5b604052919050565b600067ffffffffffffffff821115612cd857600080fd5b5060209081020190565b600067ffffffffffffffff821115612cf957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b82818337506000910152565b60005b83811015612d71578181015183820152602001612d59565b8381111561130c5750506000910152565b601f01601f1916905600a265627a7a72305820682d1602379b33ff747353eaf1b2a8dc337813e5ba092b44e16cfcc4450623af6c6578706572696d656e74616cf50037")
							String vssBaseCode,

				@ApiParam(value="子链scs节点的三分之二个数",required=true)@RequestParam String vssBaseThreshold,

				@ApiParam(value="子链合约编码",required=true)
				@RequestParam(defaultValue="60806040526018601655670de0b6b3a76400006017556601c6bf5263400060195564174876e800601a55662386f26fc10000601b55662386f26fc1000060275564e8d4a51000602c5564174876e800602d556404a817c800602e556050602f5560006031556001603355600060345560fa60385560066039556005603d556000603e5560a0603f55606e6040556101f46041556101f46042556064604355348015620000aa57600080fd5b506040516101208062007fef8339810180604052620000cd91908101906200057f565b60008060008760011480620000e25750876003145b80620000ee5750876005145b80620000fa5750876007145b15156200010657600080fd5b86600b1480620001165750866015145b8062000122575086601f145b806200012e5750866033145b806200013a5750866063145b15156200014657600080fd5b602885101580156200015a57506101f48511155b15156200016657600080fd5b60058590556006859055602b8054600160a060020a031916600160a060020a038d8116919091179091556040517fde42f13c0000000000000000000000000000000000000000000000000000000081528d94509084169063de42f13c90620001d59089908c90600401620006a6565b602060405180830381600087803b158015620001f057600080fd5b505af115801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200022b919081019062000656565b60038190555082600160a060020a031663365bfb9e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200028957600080fd5b505af11580156200029e573d6000803e3d6000fd5b505060328054600160a060020a031916600160a060020a038e8116919091179182905560338d9055604080517f313ce567000000000000000000000000000000000000000000000000000000008152905192909116955085935063313ce56792506004808201926020929091908290030181600087803b1580156200032257600080fd5b505af115801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200035d919081019062000656565b6034819055601210156200037057600080fd5b60345460120360348190555081600160a060020a03166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620003d457600080fd5b505af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200040f919081019062000656565b9050603454600a0a603354820202603181905550603454600a0a6033546031548115156200043957fe5b048115156200044457fe5b0481146200045157600080fd5b6001889055600287905560008054600160a060020a031916600160a060020a038e161781556004908155600e8054600160a060020a03191633179055600580546040517fb8a167e6000000000000000000000000000000000000000000000000000000008152600160a060020a0387169363b8a167e693620004d69302910162000690565b600060405180830381600087803b158015620004f157600080fd5b505af115801562000506573d6000803e3d6000fd5b5050600019600d5550506011805461ffff19166101001790556000602a819055603055505060468054600160a060020a031916600160a060020a03939093169290921790915550620006d4975050505050505050565b60006200056a8251620006c8565b9392505050565b60006200056a8251620006c5565b60008060008060008060008060006101208a8c0312156200059f57600080fd5b6000620005ad8c8c6200055c565b9950506020620005c08c828d016200055c565b9850506040620005d38c828d016200055c565b9750506060620005e68c828d0162000571565b9650506080620005f98c828d0162000571565b95505060a06200060c8c828d0162000571565b94505060c06200061f8c828d0162000571565b93505060e0620006328c828d0162000571565b925050610100620006468c828d016200055c565b9150509295985092959850929598565b6000602082840312156200066957600080fd5b600062000677848462000571565b949350505050565b6200068a81620006c5565b82525050565b60208101620006a082846200067f565b92915050565b60408101620006b682856200067f565b6200056a60208301846200067f565b90565b600160a060020a031690565b61790b80620006e46000396000f30060806040526004361061049f5763ffffffff60e060020a60003504166303d0592381146104b857806303e3c9ac146104d857806307289245146105035780630ac168a1146105185780630be6075a1461052d5780630d31454614610542578063110afc0f1461055757806311f79f7c146105775780631463ef071461059757806315e9977e146105c4578063208f2a31146105d957806321a1b4951461060657806326009deb146106295780632ad0f79b1461063e5780632b114a7c1461065e5780632da0371914610673578063301b48871461069557806330be5944146106b557806330e7f8ef146106d5578063312e014b146106ea57806332ed5b121461070a5780633a46492a146107415780633b082706146107615780633c1f16aa1461078157806340caae06146107a357806342cbb15c146107b857806343d726d6146107cd57806344a58781146107e257806346d636761461081157806348291f1e146108265780634d13deae1461083b5780634ed9880c1461084e57806350859fd914610863578063517549a01461088357806357365df2146108a35780635defc56c146108c35780635f5ffef0146108d85780635fd652db146108ed578063634eaea614610902578063689b00ed1461091757806369f3576f146109375780636b35d3671461094c5780636d9817eb1461096c5780636da49b831461098c5780636f7e15da146109a15780636f8c54b5146109c157806376164fb6146109e1578063793ebd89146109f65780637a81383314610a0b57806383d6f69714610a205780638640c8b114610a355780638987392714610a575780638ce7442614610a77578063950f787914610a8c5780639b09723e14610aa15780639d3979a114610ab65780639eb34e4314610acb578063a2f09dfa14610ae0578063a53dae5914610ae8578063a5824de114610afd578063a7fc116114610b12578063a94f7a7014610b27578063a9555e6c14610b47578063aa7e298614610b67578063ab3c7d8714610b87578063b062a92714610b9c578063b19932c014610bb1578063b74c3eff14610be1578063b859889614610c0e578063be93f1b314610c2e578063beba618e14610c4e578063bff92d7014610c6e578063c063d98714610c83578063c067247c14610cb1578063c20b124614610cc6578063c4474a5914610ce6578063c66da99714610cfb578063c7f758a814610d1b578063ca3b852f14610d48578063ca5e56aa14610d5d578063cae56d5814610d7d578063cbe5b2a414610d9d578063cc819ad014610dca578063d0fab88514610dea578063d12ff2eb14610e0a578063d4f79bd514610e1f578063d736b38214610e34578063d7c3dc5f14610e49578063d826f88f14610e5e578063db22ccad14610e73578063dc393c0914610e88578063dc82c54f14610e9d578063dcd338ca14610eb2578063df4b780d14610ed2578063e3bbb4f114610ef2578063e5df842514610f07578063e9e150d014610f1c578063eb23414614610f31578063eba308f814610f46578063f21df01214610f5b578063f2faa2a614610f70578063f3fef3a314610f85578063f9326cf514610fa5578063fae67d4014610fba578063fcac00bc14610fcf575b600054600160a060020a031633146104b657600080fd5b005b3480156104c457600080fd5b506104b66104d3366004616cf4565b610fe4565b3480156104e457600080fd5b506104ed61101d565b6040516104fa919061779e565b60405180910390f35b34801561050f57600080fd5b506104ed611023565b34801561052457600080fd5b506104ed611029565b34801561053957600080fd5b506104ed61102f565b34801561054e57600080fd5b506104ed611035565b34801561056357600080fd5b506104b6610572366004616edb565b61103b565b34801561058357600080fd5b506104b6610592366004616cf4565b611140565b3480156105a357600080fd5b506105b76105b2366004616f17565b61119a565b6040516104fa9190617790565b3480156105d057600080fd5b506104ed6116da565b3480156105e557600080fd5b506105f96105f4366004616edb565b6116e0565b6040516104fa919061755e565b34801561061257600080fd5b5061061b611708565b6040516104fa92919061771e565b34801561063557600080fd5b506104ed6118b1565b34801561064a57600080fd5b506105f9610659366004616cf4565b6118b7565b34801561066a57600080fd5b506104ed6118d2565b34801561067f57600080fd5b506106886118d8565b6040516104fa91906177ac565b3480156106a157600080fd5b506105b76106b0366004617013565b611966565b3480156106c157600080fd5b506105b76106d0366004617013565b611c82565b3480156106e157600080fd5b506104ed611da1565b3480156106f657600080fd5b506104b6610705366004616edb565b611da7565b34801561071657600080fd5b5061072a610725366004616edb565b611dfc565b6040516104fa9b9a999897969594939291906175d0565b34801561074d57600080fd5b506104b661075c366004616edb565b611e61565b34801561076d57600080fd5b506104ed61077c366004616edb565b611e7d565b34801561078d57600080fd5b50610796611e9c565b6040516104fa91906177df565b3480156107af57600080fd5b506104b661232f565b3480156107c457600080fd5b506104ed612356565b3480156107d957600080fd5b506104b661235b565b3480156107ee57600080fd5b506108026107fd366004616edb565b612405565b6040516104fa93929190617694565b34801561081d57600080fd5b506104ed6124ce565b34801561083257600080fd5b506104ed6124d4565b6104b6610849366004616d1a565b6124da565b34801561085a57600080fd5b506104ed6126c9565b34801561086f57600080fd5b506104ed61087e366004616cf4565b6126cf565b34801561088f57600080fd5b506105b761089e366004617032565b612881565b3480156108af57600080fd5b506104ed6108be366004616cf4565b6129f8565b3480156108cf57600080fd5b506104b6612a0a565b3480156108e457600080fd5b506105f9612a42565b3480156108f957600080fd5b506104ed612a51565b34801561090e57600080fd5b506104b6612a57565b34801561092357600080fd5b506104b6610932366004616edb565b612a75565b34801561094357600080fd5b506105b7612a91565b34801561095857600080fd5b506104ed610967366004616cf4565b612cdc565b34801561097857600080fd5b506104b6610987366004616edb565b612cee565b34801561099857600080fd5b506104ed612d0a565b3480156109ad57600080fd5b506104b66109bc366004616d1a565b612d10565b3480156109cd57600080fd5b506105b76109dc366004616d9c565b612dd4565b3480156109ed57600080fd5b506104ed6131eb565b348015610a0257600080fd5b506104ed6131f1565b348015610a1757600080fd5b506105b76131f7565b348015610a2c57600080fd5b506104ed6131fc565b348015610a4157600080fd5b50610a4a613202565b6040516104fa919061770d565b348015610a6357600080fd5b506105b7610a72366004616d9c565b613267565b348015610a8357600080fd5b506105f9613629565b348015610a9857600080fd5b506104ed613638565b348015610aad57600080fd5b506104ed61363e565b348015610ac257600080fd5b506104ed613644565b348015610ad757600080fd5b506104ed61364a565b6104b6613650565b348015610af457600080fd5b506104ed61371c565b348015610b0957600080fd5b506105f9613722565b348015610b1e57600080fd5b506104ed613731565b348015610b3357600080fd5b506105f9610b42366004616edb565b613737565b348015610b5357600080fd5b506104ed610b62366004616cf4565b613745565b348015610b7357600080fd5b506104b6610b82366004616edb565b613757565b348015610b9357600080fd5b506105b7613773565b348015610ba857600080fd5b506104ed613790565b348015610bbd57600080fd5b50610bd1610bcc366004616d6c565b613796565b6040516104fa9493929190617743565b348015610bed57600080fd5b50610c01610bfc366004616cf4565b613a8a565b6040516104fa91906177ce565b348015610c1a57600080fd5b506105b7610c29366004616e11565b613b63565b348015610c3a57600080fd5b506104b6610c49366004616edb565b613c1e565b348015610c5a57600080fd5b506105b7610c69366004616edb565b613d26565b348015610c7a57600080fd5b506104ed613ea2565b348015610c8f57600080fd5b50610ca3610c9e366004616edb565b613ea8565b6040516104fa929190617674565b348015610cbd57600080fd5b506104ed613f6b565b348015610cd257600080fd5b506104ed610ce1366004616edb565b613fb3565b348015610cf257600080fd5b506104ed613ff8565b348015610d0757600080fd5b506104ed610d16366004616edb565b613ffe565b348015610d2757600080fd5b50610d3b610d36366004616edb565b61405b565b6040516104fa91906177bd565b348015610d5457600080fd5b506104ed6146e5565b348015610d6957600080fd5b506105b7610d78366004616edb565b6146eb565b348015610d8957600080fd5b506104ed610d98366004616edb565b614b8a565b348015610da957600080fd5b50610dbd610db8366004616edb565b614b9e565b6040516104fa91906177f0565b348015610dd657600080fd5b506105b7610de5366004617013565b614bc5565b348015610df657600080fd5b506105b7610e05366004616cf4565b615275565b348015610e1657600080fd5b506104ed615291565b348015610e2b57600080fd5b506104ed615297565b348015610e4057600080fd5b506104ed61529c565b348015610e5557600080fd5b506104ed6152a2565b348015610e6a57600080fd5b506104b66152a8565b348015610e7f57600080fd5b506104ed6152d7565b348015610e9457600080fd5b506104ed6152dd565b348015610ea957600080fd5b506105f96152e2565b348015610ebe57600080fd5b506105b7610ecd366004616e5e565b6152f1565b348015610ede57600080fd5b506104b6610eed366004616cf4565b61551a565b348015610efe57600080fd5b506104ed615704565b348015610f1357600080fd5b506104ed61570a565b348015610f2857600080fd5b506104ed615710565b348015610f3d57600080fd5b506105f9615716565b348015610f5257600080fd5b506104ed615725565b348015610f6757600080fd5b506104ed61572b565b348015610f7c57600080fd5b506104ed615731565b348015610f9157600080fd5b506104b6610fa0366004616d6c565b615737565b348015610fb157600080fd5b506104ed615792565b348015610fc657600080fd5b506104ed615798565b348015610fdb57600080fd5b506104ed61579e565b600e54600160a060020a03163314610ffb57600080fd5b60468054600160a060020a031916600160a060020a0392909216919091179055565b60025481565b60425481565b60195481565b603f5481565b600a5481565b600e54600160a060020a031633148015611056575060295481105b151561106157600080fd5b60298054600019810190811061107357fe5b906000526020600020906002020160298281548110151561109057fe5b60009182526020909120825460029283029091018054600160a060020a031916600160a060020a039092169190911781556001808401805492936110e5938386019360001990821615610100020116046166e6565b50506029805490915060001981019081106110fc57fe5b6000918252602082206002909102018054600160a060020a0319168155906111276001830182616767565b5050602980549061113c9060001983016167ab565b5050565b604654600160a060020a0316331461115757600080fd5b600160a060020a038116600090815260126020526040812054111561119757600160a060020a038116600090815260126020526040902080546000190190555b50565b6000806000805a9250600f548b1080156111d55750601080548c9081106111bd57fe5b600091825260209091200154600160a060020a031633145b15156111e057600080fd5b6111e98b613fb3565b431015801561120657506016546002026112028c613fb3565b0143105b151561121157600080fd5b600f5488511461122057600080fd5b600f5460029004875110151561123557600080fd5b602e543a111561124457600080fd5b604454603a541061125457600080fd5b600160075460009081526013602052604090206006015414156112df5760078054600090815260136020908152604080832060056006909101559254825282822054600160a060020a03168252601290529081205411156112df57600754600090815260136020908152604080832054600160a060020a031683526012909152902080546000190190555b6008548a518b9060009081106112f157fe5b602090810290910101511461130957600093506116cc565b611312336157a4565b151561132157600093506116cc565b89600181518110151561133057fe5b60209081029091010151915060008083815260136020526040902060060154111561135e57600093506116cc565b60008281526013602052604081208054600160a060020a03191633178155600854600182015560020183905589518a9190811061139757fe5b6020908102909101810151600084815260139092526040909120600301558851899060019081106113c457fe5b602090810290910181015160008481526013909252604082206004015590505b600f5481101561148e576000828152601360205260409020885160059091019089908390811061141057fe5b6020908102909101810151825460018101845560009384528284200155838252601390526040902060108054600f909201918390811061144c57fe5b600091825260208083209091015483546001818101865594845291909220018054600160a060020a031916600160a060020a03909216919091179055016113e4565b60016000838152601360205260409020600601556114ab8b613fb3565b60008381526013602090815260408220600781019390935560088301805460018181018355918452828420018f905560098401805482019055601190930180549384018155825281209091018054600160a060020a0319163317905590505b865181101561155f5760008281526013602052604090208751600a9091019088908390811061153557fe5b6020908102909101810151825460018181018555600094855292909320909201919091550161150a565b6000828152601360205260408120600b81018054600160a060020a031916600160a060020a038a16179055600c81018790556010015584151561161e5760405160e560020a63010cee25028152600d9063219dc4a0906115c69030906002906004016175b5565b602060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116189190810190616ebd565b5061169c565b60405160e560020a63010cee25028152600d9063219dc4a090611648903090600b906004016175b5565b602060405180830381600087803b15801561166257600080fd5b505af1158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061169a9190810190616ebd565b505b6007829055600a8b90553a5a33600090815260146020526040902080549186036153ee0192909202019055600193505b505050979650505050505050565b60315481565b60108054829081106116ee57fe5b600091825260209091200154600160a060020a0316905081565b60608060006060806000603c80549050935083604051908082528060200260200182016040528015611744578160200160208202803883390190505b5092508360405190808252806020026020018201604052801561177b57816020015b60608152602001906001900390816117665790505b509150600090505b838110156118a657603c80548290811061179957fe5b60009182526020909120600390910201548351600160a060020a03909116908490839081106117c457fe5b600160a060020a03909216602092830290910190910152603c8054829081106117e957fe5b600091825260209182902060026003909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156118815780601f1061185657610100808354040283529160200191611881565b820191906000526020600020905b81548152906001019060200180831161186457829003601f168201915b5050505050828281518110151561189457fe5b60209081029091010152600101611783565b509094909350915050565b601c5481565b601860205260009081526040902054600160a060020a031681565b60015481565b600b805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561195e5780601f106119335761010080835404028352916020019161195e565b820191906000526020600020905b81548152906001019060200180831161194157829003601f168201915b505050505081565b60008060008085600114156119ae57601080543391908790811061198657fe5b600091825260209091200154600160a060020a0316146119a95760009350611c79565b611a16565b8560021415611a0d5733600160a060020a0316601860006010888154811015156119d457fe5b6000918252602080832090910154600160a060020a03908116845290830193909352604090910190205416146119a95760009350611c79565b60009350611c79565b601654600f54600554600d54019102600202014311611a385760009350611c79565b6010805486908110611a4657fe5b6000918252602082200154905460175460405160e060020a63202cc5e1028152600160a060020a039384169650919092169350839163202cc5e191611a8f9187916004016175b5565b602060405180830381600087803b158015611aa957600080fd5b505af1158015611abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ae19190810190616ebd565b505060465460405160e060020a63f06dc92d028152600160a060020a0390911690819063f06dc92d90611b1890869060040161755e565b600060405180830381600087803b158015611b3257600080fd5b505af1158015611b46573d6000803e3d6000fd5b5050600f80546000190190819055601080549093509091508110611b6657fe5b60009182526020909120015460108054600160a060020a039092169187908110611b8c57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055506010600f54815481101515611bcb57fe5b60009182526020909120018054600160a060020a03191690556010805490611bf79060001983016167d7565b5060405160e560020a63010cee25028152600d9063219dc4a090611c2190309084906004016175b5565b602060405180830381600087803b158015611c3b57600080fd5b505af1158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c739190810190616ebd565b50600193505b50505092915050565b6000808360011415611cc7576010805433919085908110611c9f57fe5b600091825260209091200154600160a060020a031614611cc25760009150611d9a565b611d2f565b8360021415611d265733600160a060020a031660186000601086815481101515611ced57fe5b6000918252602080832090910154600160a060020a0390811684529083019390935260409091019020541614611cc25760009150611d9a565b60009150611d9a565b601c54600511611d425760009150611d9a565b5060005b601c54811015611d775782601d8260058110611d5e57fe5b01541415611d6f5760009150611d9a565b600101611d46565b82601d601c54600581101515611d8957fe5b0155601c8054600190810190915591505b5092915050565b60045481565b601554600214611db657600080fd5b6024805433919083908110611dc757fe5b600091825260209091200154600160a060020a031614611de657600080fd5b5033600090815260126020526040902060059055565b601360205260009081526040902080546001820154600283015460038401546004850154600686015460078701546009880154600b890154600c8a01546010909a0154600160a060020a03998a169a989997989697959694959394929390911691908b565b600e54600160a060020a03163314611e7857600080fd5b603f55565b6023805482908110611e8b57fe5b600091825260209091200154905081565b611ea46167fb565b60008054600160a060020a03198116600160a060020a03909116178155604080516002808252606082810190935282918291816020016020820280388339019050509250600154836000815181101515611efa57fe5b60209081029091010152600254835184906001908110611f1657fe5b60209081029091018101919091528351611f3891600187019190860190616878565b50604080516003808252608082019092529060208201606080388339019050509150601954826000815181101515611f6c57fe5b60209081029091010152601a54825183906001908110611f8857fe5b60209081029091010152601b54825183906002908110611fa457fe5b60209081029091018101919091528251611fc691600287019190850190616878565b506016546003850155602b5460048086018054600160a060020a03938416600160a060020a03199182161790915560175460058801556030546006880155600e546007880180549190941691161790915560315460088601556040805182815260a081019091529060208201608080388339019050509050603e5481600081518110151561205057fe5b60209081029091010152603f5481518290600190811061206c57fe5b6020908102909101015260405481518290600290811061208857fe5b602090810290910101526041548151829060039081106120a457fe5b602090810290910181019190915281516120c691600987019190840190616878565b50601080546120d991600a8701916168b3565b50602480546120ec91600b8701916168b3565b5060408051610180810182528554600160a060020a03168152600186018054835160208281028201810190955281815292938893818601939092909183018282801561215757602002820191906000526020600020905b815481526020019060010190808311612143575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156121af57602002820191906000526020600020905b81548152602001906001019080831161219b575b505050918352505060038201546020808301919091526004830154600160a060020a039081166040808501919091526005850154606085015260068501546080850152600785015490911660a0840152600884015460c084015260098401805482518185028101850190935280835260e090940193919290919083018282801561225857602002820191906000526020600020905b815481526020019060010190808311612244575b50505050508152602001600a82018054806020026020016040519081016040528092919081815260200182805480156122ba57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161229c575b50505050508152602001600b820180548060200260200160405190810160405280929190818152602001828054801561231c57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116122fe575b50505050508152505094505b5050505090565b600e54600160a060020a0316151561235457600e8054600160a060020a031916331790555b565b435b90565b600e54600160a060020a0316331461237257600080fd5b60016030556007541515612354576005544303600d90815563219dc4a03060085b6040518363ffffffff1660e060020a0281526004016123b39291906175b5565b602060405180830381600087803b1580156123cd57600080fd5b505af11580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111979190810190616ebd565b603c80548290811061241357fe5b6000918252602091829020600391909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f8101889004880285018801909252818452600160a060020a03909416965090949192918301828280156124c45780601f10612499576101008083540402835291602001916124c4565b820191906000526020600020905b8154815290600101906020018083116124a757829003601f168201915b5050505050905083565b601a5481565b60335481565b603054156124e757600080fd5b602c543410156124f657600080fd5b600160a060020a0382166000908152602860205260409020541561251957600080fd5b600160a060020a038216151561252e57600080fd5b612537826126cf565b6004148061254b5750612549826126cf565b155b151561255657600080fd5b600160a060020a038281166000818152602860209081526040808320349081905560458054820190558151606081018352948552848301908152908401868152603c8054600181018083559190955285517fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a7e60039096029586018054600160a060020a0319169190981617875591517fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a7f850155518051919593612640937fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a80909101929101906168ff565b50600d925063219dc4a0915030905060065b6040518363ffffffff1660e060020a0281526004016126729291906175b5565b602060405180830381600087803b15801561268c57600080fd5b505af11580156126a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126c49190810190616ebd565b505050565b60345481565b600080805b6010548210156127265783600160a060020a03166010838154811015156126f757fe5b600091825260209091200154600160a060020a0316141561271b576001925061287a565b6001909101906126d4565b600160a060020a038416600090815260286020526040902054633b9aca0011612752576002925061287a565b600091505b6024548210156127a95783600160a060020a031660248381548110151561277a57fe5b600091825260209091200154600160a060020a0316141561279e576003925061287a565b600190910190612757565b5060005460405160e060020a63ce9d9bd7028152600160a060020a0390911690819063ce9d9bd7906127df90879060040161755e565b602060405180830381600087803b1580156127f957600080fd5b505af115801561280d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128319190810190616ebd565b156128755761286784601160005b60208104919091015460115460ff601f90931661010090810a90920483169291900416613b63565b15612875576004925061287a565b600092505b5050919050565b6000806000805a6000878152601360205260409020600f549194509250871080156128cd575060108054889081106128b557fe5b600091825260209091200154600160a060020a031633145b15156128d857600080fd5b602e543a11156128e757600080fd5b6128f0336157a4565b15156128ff57600093506129ee565b600160068301541461291457600093506129ee565b43601654600202836007015401101561293057600093506129ee565b5060005b81600901548110156129745786826008018281548110151561295257fe5b9060005260206000200154141561296c57600093506129ee565b600101612934565b84156129a25760118201805460018101825560009182526020909120018054600160a060020a031916331790555b60088201805460018181018355600092835260209092200188905560098301805490910190553a5a33600090815260146020526040902080549186036153ee0192909202019055600193505b5050509392505050565b60286020526000908152604090205481565b60305415612a1757600080fd5b600e54600160a060020a03163314612a2e57600080fd5b6001601555600d63219dc4a0306000612393565b604654600160a060020a031690565b60415481565b600e54600160a060020a03163314612a6e57600080fd5b6000600955565b600e54600160a060020a03163314612a8c57600080fd5b604055565b6000808080808060305414612aa557600080fd5b600e54600160a060020a03163314612abc57600080fd5b6000601555604654600154600f54600160a060020a0390921695501115612c4c57600054600f54600160a060020a03909116935091505b6000821115612c3e57601080546000198401908110612b0e57fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509185169163202cc5e191612b53918591906004016175b5565b602060405180830381600087803b158015612b6d57600080fd5b505af1158015612b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ba59190810190616ebd565b5060405160e060020a63f06dc92d028152600160a060020a0385169063f06dc92d90612bd590849060040161755e565b600060405180830381600087803b158015612bef57600080fd5b505af1158015612c03573d6000803e3d6000fd5b50505050601060018303815481101515612c1957fe5b60009182526020909120018054600160a060020a031916905560001990910190612af3565b6000600f8190559450612328565b43600d908155600060095560405160e560020a63010cee2502815263219dc4a090612c7e9030906001906004016175b5565b602060405180830381600087803b158015612c9857600080fd5b505af1158015612cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cd09190810190616ebd565b50600194505050505090565b60146020526000908152604090205481565b600e54600160a060020a03163314612d0557600080fd5b603955565b600f5481565b600e54600160a060020a03163314612d2757600080fd5b60408051808201909152600160a060020a0383811682526020808301848152602980546001810180835560009290925285517fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caac60029092029182018054600160a060020a031916919096161785559151805191959493612dcc937fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caad01929101906168ff565b505050505050565b60008080808060305414612de757600080fd5b612df0336126cf565b600414612dfc57600080fd5b601554600214612e0f57600093506131df565b60005460405160e060020a63ce9d9bd7028152600160a060020a039091169350839063ce9d9bd790612e4590339060040161755e565b602060405180830381600087803b158015612e5f57600080fd5b505af1158015612e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e979190810190616ebd565b1515612ea657600093506131df565b612eb3336011600061283f565b1515612ec257600093506131df565b60255460265410612ed657600093506131df565b600091505b600f54821015612f25576010805433919084908110612ef657fe5b600091825260209091200154600160a060020a03161415612f1a57600093506131df565b600190910190612edb565b600091505b602454821015612f74576024805433919084908110612f4557fe5b600091825260209091200154600160a060020a03161415612f6957600093506131df565b600190910190612f2a565b6017546040517f6220fb1d000000000000000000000000000000000000000000000000000000008152600160a060020a03851691636220fb1d91612fc29133918d908d908d906004016176c1565b602060405180830381600087803b158015612fdc57600080fd5b505af1158015612ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130149190810190616ebd565b151561302357600093506131df565b506024805460018181019092557f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec4018054600160a060020a03191633908117909155602680549092019091556000818152601260205260408082209190915560465490517feefb4227000000000000000000000000000000000000000000000000000000008152600160a060020a039190911691829163eefb4227916130cd9189906004016175b5565b600060405180830381600087803b1580156130e757600080fd5b505af11580156130fb573d6000803e3d6000fd5b50505050600160a060020a0389161515613134573360008181526018602052604090208054600160a060020a031916909117905561315d565b3360009081526018602052604090208054600160a060020a031916600160a060020a038b161790555b60405160e560020a63010cee25028152600d9063219dc4a0906131879030906007906004016175b5565b602060405180830381600087803b1580156131a157600080fd5b505af11580156131b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131d99190810190616ebd565b50600193505b50505095945050505050565b60095481565b60385481565b600081565b60175481565b6060603560000180548060200260200160405190810160405280929190818152602001828054801561325d57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161323f575b5050505050905090565b6000808080806030541461327a57600080fd5b613283336126cf565b60041461328f57600080fd5b6015546001146132a257600093506131df565b60005460405160e060020a63ce9d9bd7028152600160a060020a039091169350839063ce9d9bd7906132d890339060040161755e565b602060405180830381600087803b1580156132f257600080fd5b505af1158015613306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061332a9190810190616ebd565b151561333957600093506131df565b613346336011600061283f565b151561335557600093506131df565b600254600f54111561336a57600093506131df565b600091505b600f548210156133b957601080543391908490811061338a57fe5b600091825260209091200154600160a060020a031614156133ae57600093506131df565b60019091019061336f565b6017546040517f6220fb1d000000000000000000000000000000000000000000000000000000008152600160a060020a03851691636220fb1d916134079133918d908d908d906004016176c1565b602060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134599190810190616ebd565b151561346857600093506131df565b506010805460018181019092557f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018054600160a060020a03191633908117909155600f8054909201909155600081815260126020526040908190206005905560465490517feefb4227000000000000000000000000000000000000000000000000000000008152600160a060020a039190911691829163eefb4227916135139189906004016175b5565b600060405180830381600087803b15801561352d57600080fd5b505af1158015613541573d6000803e3d6000fd5b50506040517fe4c1de98000000000000000000000000000000000000000000000000000000008152600160a060020a038416925063e4c1de98915061358a90339060040161755e565b600060405180830381600087803b1580156135a457600080fd5b505af11580156135b8573d6000803e3d6000fd5b50505050600160a060020a03891615156135f1573360008181526018602052604090208054600160a060020a031916909117905561361a565b3360009081526018602052604090208054600160a060020a031916600160a060020a038b161790555b50600198975050505050505050565b600054600160a060020a031681565b60275481565b60455481565b600d5481565b60395481565b600e54600090600160a060020a0316331461366a57600080fd5b60448054340190819055603a54101561119757506000603a55601654600f54600554600d54019102600202014381116111975743600d90815560405160e560020a63010cee2502815263219dc4a0906136ca9030906008906004016175b5565b602060405180830381600087803b1580156136e457600080fd5b505af11580156136f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061113c9190810190616ebd565b60405481565b604654600160a060020a031681565b603a5481565b60248054829081106116ee57fe5b60126020526000908152604090205481565b600e54600160a060020a0316331461376e57600080fd5b603855565b601654600f54600554600d540191026002020143811015905b5090565b601b5481565b606080808060008082808080600160a060020a038c161561380b578a95505b6035548610156138065760358054600160a060020a038e169190889081106137d957fe5b600091825260209091200154600160a060020a031614156137fb576001909401935b6001909501946137b5565b613814565b6035548b900394505b8460405190808252806020026020018201604052801561383e578160200160208202803883390190505b5093508460405190808252806020026020018201604052801561386b578160200160208202803883390190505b50925084604051908082528060200260200182016040528015613898578160200160208202803883390190505b506040805160028082526060820183529294509190602083019080388339019050509050600094508a95505b603554861015613a3f57600160a060020a038c16156139805760358054600160a060020a038e169190889081106138f757fe5b600091825260209091200154600160a060020a0316141561397b57603680548790811061392057fe5b9060005260206000200154838681518110151561393957fe5b60209081029091010152603780548790811061395157fe5b9060005260206000200154828681518110151561396a57fe5b602090810290910101526001909401935b613a34565b603580548790811061398e57fe5b6000918252602090912001548451600160a060020a03909116908590879081106139b457fe5b600160a060020a0390921660209283029091019091015260368054879081106139d957fe5b906000526020600020015483868151811015156139f257fe5b602090810290910101526037805487908110613a0a57fe5b90600052602060002001548286815181101515613a2357fe5b602090810290910101526001909401935b6001909501946138c4565b603854816000815181101515613a5157fe5b60209081029091010152603954815182906001908110613a6d57fe5b6020908102919091010152929b919a509850909650945050505050565b613a9261696c565b600160a060020a0382166000908152603b60209081526040918290208251815460609381028201840185529381018481529093919284928491840182828015613afa57602002820191906000526020600020905b815481526020019060010190808311613ae6575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613b5257602002820191906000526020600020905b815481526020019060010190808311613b3e575b50505050508152505090505b919050565b6000806000613b7386868661585f565b9150613b8030868661585f565b905060035460ff1415613b965760019250613c15565b808210613bdf5760035481830311613bb15760019250613c15565b600060035482031015613bd6576003546101000381830310613bd65760019250613c15565b60009250613c15565b60035482820311613bf35760019250613c15565b60035461010090820110613bd6576003546101000382820310613bd657600192505b50509392505050565b60008060305414613c2e57600080fd5b600e54600160a060020a03163314613c4557600080fd5b600254600f546026540110613c5957600080fd5b5060026015819055600f54602680549254929092030360255560245490556000546040517fe17095a4000000000000000000000000000000000000000000000000000000008152600160a060020a0390911690819063e17095a490613cc290859060040161779e565b602060405180830381600087803b158015613cdc57600080fd5b505af1158015613cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613d149190810190616ef9565b600355600d63219dc4a0306005612652565b60325460009081908190600160a060020a031615612875576032546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a039091169250829063dd62ed3e90613d8c9033903090600401617572565b602060405180830381600087803b158015613da657600080fd5b505af1158015613dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dde9190810190616ef9565b9050808411612875576040517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038316906323b872dd90613e309033903090899060040161758d565b602060405180830381600087803b158015613e4a57600080fd5b505af1158015613e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613e829190810190616ebd565b1561287557613e9b603454600a0a6033548602026158da565b925061287a565b603d5481565b6029805482908110613eb657fe5b600091825260209182902060029182020180546001808301805460408051601f60001995841615610100029590950190921696909604928301879004870281018701909552818552600160a060020a0390921695509193909190830182828015613f615780601f10613f3657610100808354040283529160200191613f61565b820191906000526020600020905b815481529060010190602001808311613f4457829003601f168201915b5050505050905082565b60006001815b600f548211613fa9576016548260020202600554600d540101905043811115613f9e574381039250613fae565b600190910190613f71565b600092505b505090565b600080600554600d5401905060095483101515613fdc5760165460095484030260020201613fee565b601654600954600f5485010302600202015b8091505b50919050565b602d5481565b6016546000828152601360205260408120600701549091436002909102909101101561402e5760025b9050613b5e565b600f546000838152601360205260409020600901546002021115614053576001614027565b600092915050565b614063616983565b81600114156143ab576007546000908152601360209081526040918290208251610240810184528154600160a060020a0316815260018201548184015260028201548185015260038201546060820152600482015460808201526005820180548551818602810186019096528086529194929360a0860193929083018282801561410c57602002820191906000526020600020905b8154815260200190600101908083116140f8575b5050505050815260200160068201548152602001600782015481526020016008820180548060200260200160405190810160405280929190818152602001828054801561417857602002820191906000526020600020905b815481526020019060010190808311614164575b5050505050815260200160098201548152602001600a82018054806020026020016040519081016040528092919081815260200182805480156141da57602002820191906000526020600020905b8154815260200190600101908083116141c6575b50505050508152602001600b820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600c8201548152602001600d820180548060200260200160405190810160405280929190818152602001828054801561427557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614257575b50505050508152602001600e82018054806020026020016040519081016040528092919081815260200182805480156142cd57602002820191906000526020600020905b8154815260200190600101908083116142b9575b50505050508152602001600f820180548060200260200160405190810160405280929190818152602001828054801561432f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614311575b50505050508152602001601082015481526020016011820180548060200260200160405190810160405280929190818152602001828054801561439b57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161437d575b5050505050815250509050613b5e565b8160021415613b5e576008546000908152601360209081526040918290208251610240810184528154600160a060020a0316815260018201548184015260028201548185015260038201546060820152600482015460808201526005820180548551818602810186019096528086529194929360a0860193929083018282801561410c57602002820191906000526020600020908154815260200190600101908083116140f857505050505081526020016006820154815260200160078201548152602001600882018054806020026020016040519081016040528092919081815260200182805480156141785760200282019190600052602060002090815481526020019060010190808311614164575050505050815260200160098201548152602001600a82018054806020026020016040519081016040528092919081815260200182805480156141da57602002820191906000526020600020908154815260200190600101908083116141c65750505050508152602001600b820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600c8201548152602001600d820180548060200260200160405190810160405280929190818152602001828054801561427557602002820191906000526020600020908154600160a060020a031681526001909101906020018083116142575750505050508152602001600e82018054806020026020016040519081016040528092919081815260200182805480156142cd57602002820191906000526020600020908154815260200190600101908083116142b95750505050508152602001600f820180548060200260200160405190810160405280929190818152602001828054801561432f57602002820191906000526020600020908154600160a060020a031681526001909101906020018083116143115750505050508152602001601082015481526020016011820180548060200260200160405190810160405280929190818152602001828054801561439b57602002820191906000526020600020908154600160a060020a0316815260019091019060200180831161437d575050505050815250509050613b5e565b60075481565b6000806000806000806000806000806000805a60008e8152601360205260409020603154919c509a50151561471f57600080fd5b60108a015460011461473057600080fd5b600160068b01541461474157600080fd5b600061474c8e613ffe565b141561475b5760009b50614b7a565b60026147668e613ffe565b14156147c057600560068b01558954600160a060020a0316600081815260126020526040812054919a5010156147b757600160a060020a038916600090815260126020526040902080546000190190555b60009b50614b7a565b600f5460118b01546001985060029091041080156147e15750600c8a015415155b80156147f75750603254600160a060020a031615155b15614a375789600c015495506040548611156148135760405495505b600c8a0154600d8b01546032546040517f70a08231000000000000000000000000000000000000000000000000000000008152929091039650600160a060020a0316925082906370a082319061486d90309060040161755e565b602060405180830381600087803b15801561488757600080fd5b505af115801561489b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506148bf9190810190616ef9565b90508497505b858501881015614a3257600d8a018054899081106148df57fe5b600091825260209091200154600e8b018054600160a060020a039092169550908990811061490957fe5b60009182526020822001549350908390039081106147b75781600160a060020a031663a9059cbb85603454600a0a6033548781151561494457fe5b0481151561494e57fe5b046040518363ffffffff1660e060020a02815260040161496f9291906175b5565b602060405180830381600087803b15801561498957600080fd5b505af115801561499d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506149c19190810190616ebd565b15156149d05760009b50614b7a565b600160a060020a0384166000908152603b602090815260408220805460018181018355828552838520909101879055908101805480830182559084529190922042910155600c8b018054600019019055603e80548201905597909701966148c5565b600096505b8615614a5657614a468d61599e565b614a518d6000615cd7565b614ad4565b60405160e560020a63010cee25028152600d9063219dc4a090614a80903090600c906004016175b5565b602060405180830381600087803b158015614a9a57600080fd5b505af1158015614aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614ad29190810190616ebd565b505b3a5a60448054918e03613a98019290920290039055336108fc3a5a8e03613a9801029081150290604051600060405180830381858888f19350505050158015614b21573d6000803e3d6000fd5b5060026030541415614b7557600e54604554604051600160a060020a039092169130319190910380156108fc02916000818181858888f19350505050158015614b6e573d6000803e3d6000fd5b5060006044555b60019b505b5050505050505050505050919050565b601d8160058110614b9757fe5b0154905081565b60118160028110614bab57fe5b60209182820401919006915054906101000a900460ff1681565b60008060008060008060008060008060005a60008d8152601360205260409020600f54919b5099508d108015614c1c5750601080548e908110614c0457fe5b600091825260209091200154600160a060020a031633145b1515614c2757600080fd5b600160068a015414614c3857600080fd5b602e543a1115614c4757600080fd5b614c50336157a4565b1515614c5f5760009a50615265565b6007548c14614c715760009a50615265565b6000614c7c8d613ffe565b1415614c8b5760009a50615265565b6002614c968d613ffe565b1415614cf057600560068a01558854600160a060020a03166000818152601260205260408120549199501015614ce757600160a060020a038816600090815260126020526040902080546000190190555b60009a50615265565b60008054600160a060020a0316975095505b600a890154861015614d7157600a8901805487908110614d1e57fe5b90600052602060002001549450600060126000601088815481101515614d4057fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205560019590950194614d02565b603d546023541015614edd57602354603d54600097500393505b600f54861015614edd57831515614da157614edd565b60126000601088815481101515614db457fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020541515614ed257602380546001810182556000919091527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300186905560108054600160a060020a038916916364f3ef469189908110614e3357fe5b60009182526020909120015460175460405160e060020a63ffffffff8516028152614e6b92600160a060020a031691906004016175b5565b602060405180830381600087803b158015614e8557600080fd5b505af1158015614e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614ebd9190810190616ebd565b50601754604480549091019055600019909301925b600190950194614d8b565b600095505b8860090154861015614f735760108960080187815481101515614f0157fe5b9060005260206000200154815481101515614f1857fe5b6000918252602080832090910154600160a060020a0316808352601290915260409091205490935060051115614f6857600160a060020a0383166000908152601260205260409020805460010190555b600190950194614ee2565b60009150614f816000615e3d565b91508180614f945750614f946001615e3d565b915060028c43604051808360001916600019168152602001828152602001925050506020604051808303816000865af1158015614fd5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250614ff89190810190616ef9565b9050600860ff60f860020a600084901a810204166011805460ff19169290910460ff1691909117905560088160011a60f860020a0260f860020a900460ff1681151561504057fe5b6011805461ff0019166101009390920460ff16929092021790556015546002141561507757818061507457506150746161a7565b91505b6150ba565b60028610156150ba57600f54602a5410615096576000602a555b6150a36001602a54611c82565b50602a80546001908101909155959095019461507c565b600d89015415156150dd576150ce8c61599e565b6150d88c83615cd7565b61515a565b60405160e560020a63010cee25028152600d9063219dc4a09061510690309060049081016175b5565b602060405180830381600087803b15801561512057600080fd5b505af1158015615134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506151589190810190616ebd565b505b86600160a060020a031663365bfb9e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561519857600080fd5b505af11580156151ac573d6000803e3d6000fd5b505050506151b86163b5565b600160108a01553a5a60448054918d03613a98019290920290039055336108fc3a5a8d03613a9801029081150290604051600060405180830381858888f1935050505015801561520c573d6000803e3d6000fd5b506002603054141561526057600e54604554604051600160a060020a039092169130319190910380156108fc02916000818181858888f19350505050158015615259573d6000803e3d6000fd5b5060006044555b60019a505b5050505050505050505092915050565b600160a060020a03166000908152601260205260408120541190565b60265481565b600281565b60065481565b60035481565b600e54600160a060020a031633146152bf57600080fd5b43600d908155603c60055563219dc4a030600a612393565b60085481565b600581565b602b54600160a060020a031681565b600754600090815260136020526040812081805a8354909250600160a060020a0316331461531e57600080fd5b600c830154600d840154875101111561533657600080fd5b602e543a111561534557600080fd5b5060005b85518110156153dc5782600d01868281518110151561536457fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a039092169190911790558451600e8401908690839081106153b257fe5b60209081029091018101518254600181810185556000948552929093209092019190915501615349565b600c830154600d840154141561546e5760405160e560020a63010cee25028152600d9063219dc4a0906154169030906002906004016175b5565b602060405180830381600087803b15801561543057600080fd5b505af1158015615444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506154689190810190616ebd565b506154ec565b60405160e560020a63010cee25028152600d9063219dc4a090615498903090600b906004016175b5565b602060405180830381600087803b1580156154b257600080fd5b505af11580156154c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506154ea9190810190616ebd565b505b3a5a3360009081526014602052604090208054919094036153ee019190910201909155506001949350505050565b603c54805b60008211156126c45782600160a060020a0316603c6001840381548110151561554457fe5b6000918252602090912060039091020154600160a060020a031614156156f85782600160a060020a03166108fc603c6001850381548110151561558357fe5b9060005260206000209060030201600101549081150290604051600060405180830381858888f193505050501580156155c0573d6000803e3d6000fd5b50603c805460001984019081106155d357fe5b600091825260209091206001600390920201015460458054919091039055603c8054600019830190811061560357fe5b9060005260206000209060030201603c6001840381548110151561562357fe5b6000918252602090912082546003909202018054600160a060020a031916600160a060020a0390921691909117815560018083015481830155600280840180546156809383860193908216156101000260001901909116046166e6565b50905050603c6001820381548110151561569657fe5b6000918252602082206003909102018054600160a060020a031916815560018101829055906156c86002830182616767565b5050603c8054906156dd906000198301616a27565b50600160a060020a0383166000908152602860205260408120555b6000199091019061551f565b602e5481565b60255481565b603e5481565b603254600160a060020a031681565b60165481565b602f5481565b602c5481565b600e54600160a060020a0316331461574e57600080fd5b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015615784573d6000803e3d6000fd5b506044805491909103905550565b60435481565b60445481565b60055481565b6000806157b083615275565b15156157bf5760009150613ff2565b5060005460405160e060020a63ce9d9bd7028152600160a060020a0390911690819063ce9d9bd7906157f590869060040161755e565b602060405180830381600087803b15801561580f57600080fd5b505af1158015615823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506158479190810190616ebd565b15156158565760009150613ff2565b50600192915050565b60008060008460ff1660270360040260020a86600160a060020a031681151561588457fe5b04601002915060108460ff1660270360040260020a87600160a060020a03168115156158ac57fe5b0460100260ff168115156158bc57fe5b04905080820160f860020a0260f860020a9004925050509392505050565b603254600090600160a060020a03161561599657506035805460018181019092557fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d018054600160a060020a03191633179055603680548083019091557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b801829055603780548083018255600091909152427f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae90910155613b5e565b506000919050565b6000818152601360205260408120601b54909190818080805b600f870154841015615a2b57600f87018054859081106159d357fe5b6000918252602080832090910154600160a060020a031680835260149091526040909120546005890180549298509601959085908110615a0f57fe5b90600052602060002001548501945083806001019450506159b7565b604454851115615a4257603a805486019055615ccd565b600b870154601b54604051600160a060020a039092169181156108fc0291906000818181858888f19350505050158015615a80573d6000803e3d6000fd5b50601b54604480548290039055600b8801546040517fde99e00421493d0d0c5935ad4b7c0809921e0890edda089a7bd0d16ddaa95ba792615aca92600160a060020a0316916175b5565b60405180910390a1600093505b600f870154841015615c6357600f8701805485908110615af357fe5b6000918252602080832090910154600160a060020a03168083526014909152604080832080549084905590519198509350879184156108fc02918591818181858888f19350505050158015615b4c573d6000803e3d6000fd5b506044805483900390556040517fde99e00421493d0d0c5935ad4b7c0809921e0890edda089a7bd0d16ddaa95ba790615b8890889085906175b5565b60405180910390a160058701805485908110615ba057fe5b6000918252602080832090910154600160a060020a03808a168452601890925260408084205490519195509091169184156108fc02918591818181858888f19350505050158015615bf5573d6000803e3d6000fd5b50604480548390039055600160a060020a0380871660009081526018602052604090819020549051948401947fde99e00421493d0d0c5935ad4b7c0809921e0890edda089a7bd0d16ddaa95ba792615c5092169085906175b5565b60405180910390a1600190930192615ad7565b601a548760030154886004015403600101601954028403811515615c8357fe5b04905060435481111515615cb15760058054602801908190556042541015615cac576042546005555b615ccd565b6005546002900460058190556006541115615ccd576006546005555b5050505050505050565b600082815260136020526040902060026010820155600360068201556000600755600883905543600d55600a546001016009819055600f541015615d1b5760006009555b60016030541415615d2e57615d2e6163fb565b60018215151415615dbb5760405160e560020a63010cee25028152600d9063219dc4a090615d639030906010906004016175b5565b602060405180830381600087803b158015615d7d57600080fd5b505af1158015615d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250615db59190810190616ebd565b506126c4565b60405160e560020a63010cee25028152600d9063219dc4a090615de59030906009906004016175b5565b602060405180830381600087803b158015615dff57600080fd5b505af1158015615e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250615e379190810190616ebd565b50505050565b60008054604654602354600160a060020a0392831692909116908390606082808060018a1415615e6d57601c5494505b841515615e7c5785985061619a565b600f54604051908082528060200260200182016040528015615ea8578160200160208202803883390190505b509350600092508291505b84821015615ff757891515615efa57600184602384815481101515615ed457fe5b9060005260206000200154815181101515615eeb57fe5b60209081029091010152615fec565b601d8260058110615f0757fe5b015492508383815181101515615f1957fe5b9060200190602002015160001415615fec5760018484815181101515615f3b57fe5b602090810290910101526010805484908110615f5357fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a039283169350918a169163202cc5e191615f98918591906004016175b5565b602060405180830381600087803b158015615fb257600080fd5b505af1158015615fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250615fea9190810190616ebd565b505b600190910190615eb3565b600f5491505b600082111561617657836001830381518110151561601757fe5b906020019060200201516001141561616a57600f805460001990810190915560108054600160a060020a038a169263f06dc92d929190860190811061605857fe5b60009182526020909120015460405160e060020a63ffffffff841602815261608c91600160a060020a03169060040161755e565b600060405180830381600087803b1580156160a657600080fd5b505af11580156160ba573d6000803e3d6000fd5b505050506010600f548154811015156160cf57fe5b60009182526020909120015460108054600160a060020a039092169160001985019081106160f957fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055506010600f5481548110151561613857fe5b60009182526020909120018054600160a060020a031916905560108054906161649060001983016167d7565b50600195505b60001990910190615ffd565b89151561619057600061618a6023826167d7565b50616196565b6000601c555b8598505b5050505050505050919050565b6046546026546000918290600160a060020a03165b6000831115616396576005601260006024600187038154811015156161dd57fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054141561638a57601060246001850381548110151561621c57fe5b600091825260208083209091015483546001818101865594845291909220018054600160a060020a031916600160a060020a03928316179055600f805483019055602480549294509083169163e4c1de989190600019870190811061627d57fe5b60009182526020909120015460405160e060020a63ffffffff84160281526162b191600160a060020a03169060040161755e565b600060405180830381600087803b1580156162cb57600080fd5b505af11580156162df573d6000803e3d6000fd5b5050602480549092506000198101915081106162f757fe5b60009182526020909120015460248054600160a060020a0390921691600019860190811061632157fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560248054600019810190811061635c57fe5b60009182526020909120018054600160a060020a031916905560248054906163889060001983016167d7565b505b600019909201916161bc565b60245460268190551515611d9a57600060258190556015555092915050565b602f5460198054620f4240818402819004909103909155601a805480840283900490039055601b805480840283900490039055602d5490910204602d5403602d81905550565b6002603055600060158190556046548154600f54600160a060020a039283169392909116915b600082111561656c5760108054600019840190811061643c57fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509185169163202cc5e191616481918591906004016175b5565b602060405180830381600087803b15801561649b57600080fd5b505af11580156164af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506164d39190810190616ebd565b5060405160e060020a63f06dc92d028152600160a060020a0385169063f06dc92d9061650390849060040161755e565b600060405180830381600087803b15801561651d57600080fd5b505af1158015616531573d6000803e3d6000fd5b5050505060106001830381548110151561654757fe5b60009182526020909120018054600160a060020a031916905560001990910190616421565b6000600f5560265491505b60008211156166d65760248054600019840190811061659257fe5b60009182526020909120015460175460405160e060020a63202cc5e1028152600160a060020a0392831693509185169163202cc5e1916165d7918591906004016175b5565b602060405180830381600087803b1580156165f157600080fd5b505af1158015616605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506166299190810190616ebd565b5060405160e060020a63f06dc92d028152600160a060020a0385169063f06dc92d9061665990849060040161755e565b600060405180830381600087803b15801561667357600080fd5b505af1158015616687573d6000803e3d6000fd5b5050505060246001830381548110151561669d57fe5b60009182526020909120018054600160a060020a031916905560248054906166c99060001983016167d7565b5060001990910190616577565b5050600060268190556025555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061671f578054855561675b565b8280016001018555821561675b57600052602060002091601f016020900482015b8281111561675b578254825591600101919060010190616740565b5061378c929150616a53565b50805460018160011615610100020316600290046000825580601f1061678d5750611197565b601f0160209004906000526020600020908101906111979190616a53565b8154818355818111156126c4576002028160020283600052602060002091820191016126c49190616a6d565b8154818355818111156126c4576000838152602090206126c4918101908301616a53565b610180604051908101604052806000600160a060020a031681526020016060815260200160608152602001600081526020016000600160a060020a0316815260200160008152602001600081526020016000600160a060020a03168152602001600081526020016060815260200160608152602001606081525090565b82805482825590600052602060002090810192821561675b579160200282015b8281111561675b578251825591602001919060010190616898565b8280548282559060005260206000209081019282156168f35760005260206000209182015b828111156168f35782548255916001019190600101906168d8565b5061378c929150616aa1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061694057805160ff191683800117855561675b565b8280016001018555821561675b579182018281111561675b578251825591602001919060010190616898565b604080518082019091526060808252602082015290565b610240604051908101604052806000600160a060020a03168152602001600080191681526020016000801916815260200160008152602001600081526020016060815260200160008152602001600081526020016060815260200160008152602001606081526020016000600160a060020a031681526020016000815260200160608152602001606081526020016060815260200160008152602001606081525090565b8154818355818111156126c4576003028160030283600052602060002091820191016126c49190616ac5565b61235891905b8082111561378c5760008155600101616a59565b61235891905b8082111561378c578054600160a060020a03191681556000616a986001830182616767565b50600201616a73565b61235891905b8082111561378c578054600160a060020a0319168155600101616aa7565b61235891905b8082111561378c578054600160a060020a0319168155600060018201819055616af76002830182616767565b50600301616acb565b6000616b0c8235617878565b9392505050565b6000601f82018313616b2457600080fd5b8135616b37616b3282617825565b6177fe565b91508181835260208401935060208101905083856020840282011115616b5c57600080fd5b60005b83811015616b885781616b728882616b00565b8452506020928301929190910190600101616b5f565b5050505092915050565b6000601f82018313616ba357600080fd5b8135616bb1616b3282617825565b91508181835260208401935060208101905083856020840282011115616bd657600080fd5b60005b83811015616b885781616bec8882616c8a565b8452506020928301929190910190600101616bd9565b6000601f82018313616c1357600080fd5b8135616c21616b3282617825565b91508181835260208401935060208101905083856020840282011115616c4657600080fd5b60005b83811015616b885781616c5c8882616c8a565b8452506020928301929190910190600101616c49565b6000616b0c8235617884565b6000616b0c8251617884565b6000616b0c8235612358565b6000616b0c8251612358565b6000601f82018313616cb357600080fd5b8135616cc1616b3282617846565b91508082526020830160208301858383011115616cdd57600080fd5b611c7983828461788f565b6000616b0c8235617889565b600060208284031215616d0657600080fd5b6000616d128484616b00565b949350505050565b60008060408385031215616d2d57600080fd5b6000616d398585616b00565b925050602083013567ffffffffffffffff811115616d5657600080fd5b616d6285828601616ca2565b9150509250929050565b60008060408385031215616d7f57600080fd5b6000616d8b8585616b00565b9250506020616d6285828601616c8a565b600080600080600060a08688031215616db457600080fd5b6000616dc08888616b00565b9550506020616dd188828901616ce8565b9450506040616de288828901616c8a565b9350506060616df388828901616c8a565b9250506080616e0488828901616c8a565b9150509295509295909350565b600080600060608486031215616e2657600080fd5b6000616e328686616b00565b9350506020616e4386828701616ce8565b9250506040616e5486828701616ce8565b9150509250925092565b60008060408385031215616e7157600080fd5b823567ffffffffffffffff811115616e8857600080fd5b616e9485828601616b13565b925050602083013567ffffffffffffffff811115616eb157600080fd5b616d6285828601616c02565b600060208284031215616ecf57600080fd5b6000616d128484616c7e565b600060208284031215616eed57600080fd5b6000616d128484616c8a565b600060208284031215616f0b57600080fd5b6000616d128484616c96565b600080600080600080600060e0888a031215616f3257600080fd5b6000616f3e8a8a616c8a565b975050602088013567ffffffffffffffff811115616f5b57600080fd5b616f678a828b01616b92565b965050604088013567ffffffffffffffff811115616f8457600080fd5b616f908a828b01616c02565b955050606088013567ffffffffffffffff811115616fad57600080fd5b616fb98a828b01616c02565b945050608088013567ffffffffffffffff811115616fd657600080fd5b616fe28a828b01616c02565b93505060a0616ff38a828b01616b00565b92505060c06170048a828b01616c8a565b91505092959891949750929550565b6000806040838503121561702657600080fd5b6000616d8b8585616c8a565b60008060006060848603121561704757600080fd5b60006170538686616c8a565b935050602061706486828701616c8a565b9250506040616e5486828701616c72565b61707e81617878565b82525050565b600061708f82617874565b8084526020840193506170a18361786e565b60005b828110156170d1576170b7868351617075565b6170c08261786e565b6020969096019591506001016170a4565b5093949350505050565b60006170e682617874565b8084526020840193506170f88361786e565b60005b828110156170d15761710e868351617075565b6171178261786e565b6020969096019591506001016170fb565b600061713382617874565b8084526020840193508360208202850161714c8561786e565b60005b8481101561718357838303885261716783835161723b565b92506171728261786e565b60209890980197915060010161714f565b50909695505050505050565b600061719a82617874565b8084526020840193506171ac8361786e565b60005b828110156170d1576171c2868351617232565b6171cb8261786e565b6020969096019591506001016171af565b60006171e782617874565b8084526020840193506171f98361786e565b60005b828110156170d15761720f868351617232565b6172188261786e565b6020969096019591506001016171fc565b61707e81617884565b61707e81612358565b600061724682617874565b80845261725a81602086016020860161789b565b617263816178c7565b9093016020019392505050565b80516000906102408401906172858582617075565b5060208301516172986020860182617232565b5060408301516172ab6040860182617232565b5060608301516172be6060860182617232565b5060808301516172d16080860182617232565b5060a083015184820360a08601526172e982826171dc565b91505060c08301516172fe60c0860182617232565b5060e083015161731160e0860182617232565b5061010083015184820361010086015261732b82826171dc565b915050610120830151617342610120860182617232565b5061014083015184820361014086015261735c82826171dc565b915050610160830151617373610160860182617075565b50610180830151617388610180860182617232565b506101a08301518482036101a08601526173a282826170db565b9150506101c08301518482036101c08601526173be82826171dc565b9150506101e08301518482036101e08601526173da82826170db565b9150506102008301516173f1610200860182617232565b5061022083015184820361022086015261740b82826170db565b95945050505050565b805160408084526000919084019061742c82826171dc565b9150506020830151848203602086015261740b82826171dc565b805160009061018084019061745b8582617075565b506020830151848203602086015261747382826171dc565b9150506040830151848203604086015261748d82826171dc565b91505060608301516174a26060860182617232565b5060808301516174b56080860182617075565b5060a08301516174c860a0860182617232565b5060c08301516174db60c0860182617232565b5060e08301516174ee60e0860182617075565b50610100830151617503610100860182617232565b5061012083015184820361012086015261751d82826171dc565b91505061014083015184820361014086015261753982826170db565b91505061016083015184820361016086015261740b82826170db565b61707e81617889565b6020810161756c8284617075565b92915050565b604081016175808285617075565b616b0c6020830184617075565b6060810161759b8286617075565b6175a86020830185617075565b616d126040830184617232565b604081016175c38285617075565b616b0c6020830184617232565b61016081016175df828e617075565b6175ec602083018d617232565b6175f9604083018c617232565b617606606083018b617232565b617613608083018a617232565b61762060a0830189617232565b61762d60c0830188617232565b61763a60e0830187617232565b617648610100830186617075565b617656610120830185617232565b617664610140830184617232565b9c9b505050505050505050505050565b604081016176828285617075565b8181036020830152616d12818461723b565b606081016176a28286617075565b6176af6020830185617232565b818103604083015261740b818461723b565b60a081016176cf8288617075565b6176dc6020830187617232565b6176e96040830186617555565b6176f66060830185617232565b6177036080830184617232565b9695505050505050565b60208082528101616b0c8184617084565b6040808252810161772f8185617084565b90508181036020830152616d128184617128565b608080825281016177548187617084565b90508181036020830152617768818661718f565b9050818103604083015261777c818561718f565b90508181036060830152617703818461718f565b6020810161756c8284617229565b6020810161756c8284617232565b60208082528101616b0c818461723b565b60208082528101616b0c8184617270565b60208082528101616b0c8184617414565b60208082528101616b0c8184617446565b6020810161756c8284617555565b60405181810167ffffffffffffffff8111828210171561781d57600080fd5b604052919050565b600067ffffffffffffffff82111561783c57600080fd5b5060209081020190565b600067ffffffffffffffff82111561785d57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b60ff1690565b82818337506000910152565b60005b838110156178b657818101518382015260200161789e565b83811115615e375750506000910152565b601f01601f1916905600a265627a7a723058205b4f50893490bcd76ddf101c474c4bfab579febf4904288c8d35cdbf180d30646c6578706572696d656e74616cf50037")
						String subchainBaseCode,

				@ApiParam(value="erc20代币与子链代币兑换比率,默认为1",required=true)@RequestParam(defaultValue="1") String subchainBaseErcRate,

				@ApiParam(value="子链最少scs数，1、3、5、7选择",required=true)@RequestParam String subchainBaseMin,

				@ApiParam(value="子链最多scs数，11、21、31、51、99选择",required=true)@RequestParam String subchainBaseMax,

				@ApiParam(value="周期数，40~500之间",required=true)@RequestParam String subchainBaseFlushRound,

				@ApiParam(value="注册为monitor最少押金，合约中默认为1MOAC",required=true)@RequestParam(defaultValue="1") String subchainBaseMonitorBond,

				@ApiParam(value="vnode信息列表,如："
						+ "[{\"vnodeUrl\":\"192.168.2.124:50062\",\"vnodeAddress\":\"0x3b712f8cdb68353bf12b1e665cd86a5774816701\"},"
						+ "{\"vnodeUrl\":\"192.168.2.117:50062\",\"vnodeAddress\":\"0x29c43903054cfc3bd36f5b57d24360e4c6e65342\"}]",required=true)
				@RequestParam String vnode,

				@ApiParam(value="scs信息（默认会从管理账户给每个scs转入1个MOAC作为gas使用），如："
						+ "[{\"scsAddress\":\"b08253ff1f9315ea8a4ea02ab0d44272b6ce0caa\"},"
						+ "{\"scsAddress\":\"c9e6e1d3eb97a3b98d1a80b7bdeccbfc43ee82d8\"}]",required=true)
				@RequestParam String scs,

				@ApiParam(value="子链初始化充入MOAC币数量,默认为1",required=true)@RequestParam(defaultValue="1") String addFund

		) throws Exception {

		//子链类型 默认为3
		String subchainProtocolType = "3";
		return moacSubchainService.deployRand(accessToken,walletId,accountId,payPsw,via,vnodeCode,vnodeBmin,scsProtocolBaseCode,
				scsProtocolName,scsProtocolBmin,subchainProtocolType,erc20Code,subchainBaseCode,
				subchainBaseErcRate,subchainBaseMin,subchainBaseMax,subchainBaseFlushRound,subchainBaseMonitorBond,
				vnode,scs,addFund,vssBaseCode,vssBaseThreshold);
	}

	@GetMapping("/v1/{subchainId}")
	@ApiOperation(value="2. 获取子链部署信息",notes="返回已完成信息")
	public ResponseEntity<ResponseBase<ResponseSubchainData>> getSubchainInfo(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId){

		return moacSubchainService.getSubchainInfo(subchainId);
	}

	@PostMapping("/v1/{subchainId}/resisterOpen")
	@ApiOperation(value="3.子链开放注册（切记需在endBlock过至少5个区块后再调用）")
	public ResponseEntity<ResponseBase<Map>> resisterOpen(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.resisterOpen(subchainId,walletId,accountId,payPsw);
	}

	@GetMapping("/v1/{subchainId}/scsCount")
	@ApiOperation(value="4.获取实际子链协议池中scs个数")
	public ResponseEntity<ResponseBase<Map>> scsCount(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.scsCount(subchainId);
	}

	@GetMapping("/v1/{subchainId}/nodeCount")
	@ApiOperation(value="5.scs注册子链节点个数")
	public ResponseEntity<ResponseBase<Map>> nodeCount(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.nodeCount(subchainId);
	}


	@PostMapping("/v1/{subchainId}/resisterClose")
	@ApiOperation(value="6.子链关闭注册")
	public ResponseEntity<ResponseBase<Map>> resisterClose(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.resisterClose(subchainId,walletId,accountId,payPsw);
	}

	@PostMapping("/v1/{subchainId}/registerAsMonitor")
	@ApiOperation(value="7.注册成为子链monitor")
	public ResponseEntity<ResponseBase<Map>> registerAsMonitor(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="scs地址",required=true) @RequestParam("scsAddress") String scsAddress,
			@ApiParam(value="monitor查询地址",required=true) @RequestParam("monitorUrl") String monitorUrl) throws Exception{

		return moacSubchainService.registerAsMonitor(subchainId,walletId,accountId,payPsw,scsAddress,monitorUrl);
	}

	@PostMapping("/v1/{subchainId}/deployDappBase")
	@ApiOperation(value="8.部署子链dappBase合约",notes="返回hash为子链交易hash,请使用子链查询交易方法查询")
	public ResponseEntity<ResponseBase<Map>> deployDappBase(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="dappbase合约编码",required=true)
			@RequestParam(defaultValue="60806040819052600f805460ff191690556200238b38819003908190833981018060405262000032919081019062000188565b60078054600160a060020a0319163317905581516200005990600090602085019062000072565b50600f805460ff19169115159190911790555062000265565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b6200011491905b80821115620000f35760008155600101620000fe565b90565b60006200012582516200022d565b9392505050565b6000601f820183136200013e57600080fd5b8151620001556200014f8262000205565b620001de565b915080825260208301602083018583830111156200017257600080fd5b6200017f83828462000232565b50505092915050565b600080604083850312156200019c57600080fd5b82516001604060020a03811115620001b357600080fd5b620001c1858286016200012c565b9250506020620001d48582860162000117565b9150509250929050565b6040518181016001604060020a0381118282101715620001fd57600080fd5b604052919050565b60006001604060020a038211156200021c57600080fd5b506020601f91909101601f19160190565b151590565b60005b838110156200024f57818101518382015260200162000235565b838111156200025f576000848401525b50505050565b61211680620002756000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166310ba0499811461010b57806312df94121461014157806321e0d2d4146101635780632b1581db1461019057806331a06771146101b0578063442e95b1146101d057806357058a33146101ff5780635b1222b4146102215780635b15270c1461024e578063627c55f61461027c578063686be1151461029c5780636a8c305e146102be5780637de95853146102eb5780638240a49b1461030b57806389739c5b1461033b578063a1e1c31b14610343578063b39027b714610358578063b5560a141461036d578063f2096c3b1461038d575b600080fd5b34801561011757600080fd5b5061012b610126366004611c4a565b6103a2565b6040516101389190611fe2565b60405180910390f35b34801561014d57600080fd5b5061016161015c366004611caf565b6103fd565b005b34801561016f57600080fd5b5061018361017e366004611ad7565b6107cc565b6040516101389190611ff0565b34801561019c57600080fd5b506101616101ab366004611b62565b6108e6565b3480156101bc57600080fd5b506101616101cb366004611c15565b610a30565b3480156101dc57600080fd5b506101f06101eb366004611bdb565b610bcc565b60405161013893929190611f73565b34801561020b57600080fd5b50610214610e65565b6040516101389190611f62565b34801561022d57600080fd5b5061024161023c366004611c91565b610ec8565b6040516101389190611f09565b34801561025a57600080fd5b5061026e610269366004611ad7565b610ef0565b604051610138929190611fbd565b34801561028857600080fd5b50610161610297366004611ad7565b61106c565b3480156102a857600080fd5b506102b1611267565b6040516101389190611fac565b3480156102ca57600080fd5b506102de6102d9366004611ad7565b611383565b6040516101389190612001565b3480156102f757600080fd5b506102de610306366004611ad7565b611395565b34801561031757600080fd5b5061032b610326366004611c91565b611414565b6040516101389493929190611f1d565b6101616114e6565b34801561034f57600080fd5b50610183611585565b34801561036457600080fd5b5061012b611613565b34801561037957600080fd5b50610161610388366004611afd565b61161c565b34801561039957600080fd5b506102de611722565b6000805b83518110156103f15782600160a060020a031684828151811015156103c757fe5b90602001906020020151600160a060020a031614156103e957600191506103f6565b6001016103a6565b600091505b5092915050565b600080600080610467600480548060200260200160405190810160405280929190818152602001828054801561045c57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161043e575b5050505050336103a2565b151561047257600080fd5b855187511461048057600080fd5b600c54881461048e57600080fd5b8787878760405180858152602001848051906020019060200280838360005b838110156104c55781810151838201526020016104ad565b50505050905001838051906020019060200280838360005b838110156104f55781810151838201526020016104dd565b50505050905001828051906020019060200280838360005b8381101561052557818101518382015260200161050d565b50506040805195909301859003909420600081815260056020529290922060020154919c505060ff1615965061056195505050505050576107c2565b60008481526005602090815260409182902060010180548351818402810184019094528084526105ce939283018282801561045c57602002820191906000526020600020908154600160a060020a0316815260019091019060200180831161043e575050505050336103a2565b15156107c25760008481526005602090815260408220600190810180549182018155808452918320018054600160a060020a031916331790556004549186905254600290910410156107c2576000848152600560205260408120600201805460ff1916600117905592505b86518310156107b657865160089088908590811061065357fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a03909216919091179055855160099087908590811061069f57fe5b602090810290910181015182546001818101855560009485529284200155600a80549182018155909152427fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8909101558451600b9086908590811061070057fe5b602090810290910181015182546001810184556000938452919092200155865187908490811061072c57fe5b906020019060200201519050803b915081600014156107ab57868381518110151561075357fe5b90602001906020020151600160a060020a03166108fc878581518110151561077757fe5b602090810290910101516040518115909202916000818181858888f193505050501580156107a9573d6000803e3d6000fd5b505b600190920191610639565b8651600c805490910190555b5050505050505050565b606060005b600d548110156108ce5782600160a060020a0316600d828154811015156107f457fe5b6000918252602090912060049091020154600160a060020a031614156108c657600d80548290811061082257fe5b600091825260209182902060026004909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156108ba5780601f1061088f576101008083540402835291602001916108ba565b820191906000526020600020905b81548152906001019060200180831161089d57829003601f168201915b505050505091506108e0565b6001016107d1565b60408051602081019091526000815291505b50919050565b6007546000908190600160a060020a0316331461090257600080fd5b600160a060020a0386166000908152600e60205260408120541161092557600080fd5b5050600d54600160a060020a0385166000908152600e60205260409020546000190181811015610a285785600160a060020a0316600d8281548110151561096857fe5b6000918252602090912060049091020154600160a060020a03161415610a285784600d8281548110151561099857fe5b906000526020600020906004020160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555083600d828154811015156109dd57fe5b90600052602060002090600402016002019080519060200190610a01929190611728565b5082600d82815481101515610a1257fe5b9060005260206000209060040201600301819055505b505050505050565b60075460009081908190600160a060020a0316331415610a5f578351610a5d9060049060208701906117a6565b505b8360405180828051906020019060200280838360005b83811015610a8d578181015183820152602001610a75565b50505050905001915050604051809103902092506004604051808280548015610adf57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610ac1575b50506040519081900390209350505082821415610afb57610bc6565b6000838152600660209081526040918290208054835181840281018401909452808452610b65939283018282801561045c57602002820191906000526020600020908154600160a060020a0316815260019091019060200180831161043e575050505050336103a2565b9050801515610bc6576000838152600660209081526040822080546001810182558184529183209091018054600160a060020a031916331790558551918590525460029091041015610bc6578351610bc49060049060208701906117a6565b505b50505050565b60608080600080828080600160a060020a038a1615610c3f578893505b600154841015610c3a5760018054600160a060020a038c16919086908110610c0d57fe5b600091825260209091200154600160a060020a03161415610c2f576001909401935b600190930192610be9565b610c4b565b60015489900394909401935b84604051908082528060200260200182016040528015610c75578160200160208202803883390190505b50925084604051908082528060200260200182016040528015610ca2578160200160208202803883390190505b50915084604051908082528060200260200182016040528015610ccf578160200160208202803883390190505b509050600094508893505b600154841015610e5557600160a060020a038a1615610d965760018054600160a060020a038c16919086908110610d0d57fe5b600091825260209091200154600160a060020a03161415610d91576002805485908110610d3657fe5b90600052602060002001548286815181101515610d4f57fe5b602090810290910101526003805485908110610d6757fe5b90600052602060002001548186815181101515610d8057fe5b602090810290910101526001909401935b610e4a565b6001805485908110610da457fe5b6000918252602090912001548351600160a060020a0390911690849087908110610dca57fe5b600160a060020a039092166020928302909101909101526002805485908110610def57fe5b90600052602060002001548286815181101515610e0857fe5b602090810290910101526003805485908110610e2057fe5b90600052602060002001548186815181101515610e3957fe5b602090810290910101526001909401935b600190930192610cda565b9199909850909650945050505050565b60606004805480602002602001604051908101604052809291908181526020018280548015610ebd57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e9f575b505050505090505b90565b6004805482908110610ed657fe5b600091825260209091200154600160a060020a0316905081565b60608060008082805b600c54841015610f4a5760088054600160a060020a038916919086908110610f1d57fe5b600091825260209091200154600160a060020a03161415610f3f576001909201915b600190930192610ef9565b82604051908082528060200260200182016040528015610f74578160200160208202803883390190505b50915082604051908082528060200260200182016040528015610fa1578160200160208202803883390190505b50905060009250600093505b600c548410156110605760088054600160a060020a038916919086908110610fd157fe5b600091825260209091200154600160a060020a03161415611055576009805485908110610ffa57fe5b9060005260206000200154828481518110151561101357fe5b60209081029091010152600a80548590811061102b57fe5b9060005260206000200154818481518110151561104457fe5b602090810290910101526001909201915b600190930192610fad565b90969095509350505050565b60075460009081908190600160a060020a0316331461108a57600080fd5b600d549250600091505b82821015610bc65783600160a060020a0316600d838154811015156110b557fe5b6000918252602090912060049091020154600160a060020a0316141561125c57600d805460001985019081106110e757fe5b9060005260206000209060040201600d8381548110151561110457fe5b6000918252602090912082546004909202018054600160a060020a0319908116600160a060020a039384161782556001808501548184018054909316941693909317905560028084018054929361116c93838601939181161561010002600019011604611807565b5060039182015491015550600160a060020a0383166000908152600e60208190526040822054600d8054919384939290919060001988019081106111ac57fe5b60009182526020808320600490920290910154600160a060020a03168352820192909252604001902055600d805460001985019081106111e857fe5b6000918252602082206004909102018054600160a060020a03199081168255600182018054909116905590611220600283018261187c565b50600060039190910155600d80549061123d9060001983016118c3565b50600160a060020a0384166000908152600e6020526040812055610bc6565b600190910190611094565b6060600d805480602002602001604051908101604052809291908181526020016000905b8282101561137a57600084815260209081902060408051608081018252600486029092018054600160a060020a039081168452600180830154909116848601526002808301805485516101009482161594909402600019011691909104601f81018790048702830187018552808352949592949386019391929091908301828280156113585780601f1061132d57610100808354040283529160200191611358565b820191906000526020600020905b81548152906001019060200180831161133b57829003601f168201915b505050505081526020016003820154815250508152602001906001019061128b565b50505050905090565b600e6020526000908152604090205481565b6000805b600d5481101561140b5782600160a060020a0316600d828154811015156113bc57fe5b6000918252602090912060049091020154600160a060020a0316141561140357600d8054829081106113ea57fe5b90600052602060002090600402016003015491506108e0565b600101611399565b50600092915050565b600d80548290811061142257fe5b600091825260209182902060049091020180546001808301546002808501805460408051601f60001997841615610100029790970190921693909304948501889004880281018801909252838252600160a060020a03948516975091909316949091908301828280156114d65780601f106114ab576101008083540402835291602001916114d6565b820191906000526020600020905b8154815290600101906020018083116114b957829003601f168201915b5050505050908060030154905084565b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018054600160a060020a0319163317905560028054808301909155347f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910155600380549182018155600052427fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910155565b6000805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081565b600f5460ff1681565b600754600160a060020a0316331461163357600080fd5b600160a060020a0383166000908152600e60205260409020541561165657600080fd5b60408051608081018252600160a060020a03808616825284166020820152908101829052600d90606081016001905281546001818101808555600094855260209485902084516004909402018054600160a060020a03948516600160a060020a03199182161782558686015193820180549490951693169290921790925560408301518051929491926116ef9260028501920190611728565b50606091909101516003909101555050600d54600160a060020a039092166000908152600e602052604090209190915550565b600c5481565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061176957805160ff1916838001178555611796565b82800160010185558215611796579182015b8281111561179657825182559160200191906001019061177b565b506117a29291506118f4565b5090565b8280548282559060005260206000209081019282156117fb579160200282015b828111156117fb5782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906117c6565b506117a292915061190e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118405780548555611796565b8280016001018555821561179657600052602060002091601f016020900482015b82811115611796578254825591600101919060010190611861565b50805460018160011615610100020316600290046000825580601f106118a257506118c0565b601f0160209004906000526020600020908101906118c091906118f4565b50565b8154818355818111156118ef576004028160040283600052602060002091820191016118ef9190611932565b505050565b610ec591905b808211156117a257600081556001016118fa565b610ec591905b808211156117a2578054600160a060020a0319168155600101611914565b610ec591905b808211156117a2578054600160a060020a031990811682556001820180549091169055600061196a600283018261187c565b5060006003820155600401611938565b60006119868235612089565b9392505050565b6000601f8201831361199e57600080fd5b81356119b16119ac82612036565b61200f565b915081818352602084019350602081019050838560208402820111156119d657600080fd5b60005b83811015611a0257816119ec888261197a565b84525060209283019291909101906001016119d9565b5050505092915050565b6000601f82018313611a1d57600080fd5b8135611a2b6119ac82612036565b91508181835260208401935060208101905083856020840282011115611a5057600080fd5b60005b83811015611a025781611a668882611acb565b8452506020928301929190910190600101611a53565b6000601f82018313611a8d57600080fd5b8135611a9b6119ac82612057565b91508082526020830160208301858383011115611ab757600080fd5b611ac283828461209a565b50505092915050565b60006119868235610ec5565b600060208284031215611ae957600080fd5b6000611af5848461197a565b949350505050565b600080600060608486031215611b1257600080fd5b6000611b1e868661197a565b9350506020611b2f8682870161197a565b925050604084013567ffffffffffffffff811115611b4c57600080fd5b611b5886828701611a7c565b9150509250925092565b60008060008060808587031215611b7857600080fd5b6000611b84878761197a565b9450506020611b958782880161197a565b935050604085013567ffffffffffffffff811115611bb257600080fd5b611bbe87828801611a7c565b9250506060611bcf87828801611acb565b91505092959194509250565b60008060408385031215611bee57600080fd5b6000611bfa858561197a565b9250506020611c0b85828601611acb565b9150509250929050565b600060208284031215611c2757600080fd5b813567ffffffffffffffff811115611c3e57600080fd5b611af58482850161198d565b60008060408385031215611c5d57600080fd5b823567ffffffffffffffff811115611c7457600080fd5b611c808582860161198d565b9250506020611c0b8582860161197a565b600060208284031215611ca357600080fd5b6000611af58484611acb565b60008060008060808587031215611cc557600080fd5b6000611cd18787611acb565b945050602085013567ffffffffffffffff811115611cee57600080fd5b611cfa8782880161198d565b935050604085013567ffffffffffffffff811115611d1757600080fd5b611d2387828801611a0c565b925050606085013567ffffffffffffffff811115611d4057600080fd5b611bcf87828801611a0c565b611d5581612089565b82525050565b6000611d6682612085565b808452602084019350611d788361207f565b60005b82811015611da857611d8e868351611d4c565b611d978261207f565b602096909601959150600101611d7b565b5093949350505050565b6000611dbd82612085565b80845260208401935083602082028501611dd68561207f565b60005b84811015611e0d578383038852611df1838351611ea4565b9250611dfc8261207f565b602098909801979150600101611dd9565b50909695505050505050565b6000611e2482612085565b808452602084019350611e368361207f565b60005b82811015611da857611e4c868351611f00565b611e558261207f565b602096909601959150600101611e39565b611d5581612095565b6000611e7a82612085565b808452611e8e8160208601602086016120a6565b611e97816120d2565b9093016020019392505050565b80516000906080840190611eb88582611d4c565b506020830151611ecb6020860182611d4c565b5060408301518482036040860152611ee38282611e6f565b9150506060830151611ef86060860182611f00565b509392505050565b611d5581610ec5565b60208101611f178284611d4c565b92915050565b60808101611f2b8287611d4c565b611f386020830186611d4c565b8181036040830152611f4a8185611e6f565b9050611f596060830184611f00565b95945050505050565b602080825281016119868184611d5b565b60608082528101611f848186611d5b565b90508181036020830152611f988185611e19565b90508181036040830152611f598184611e19565b602080825281016119868184611db2565b60408082528101611fce8185611e19565b90508181036020830152611af58184611e19565b60208101611f178284611e66565b602080825281016119868184611e6f565b60208101611f178284611f00565b60405181810167ffffffffffffffff8111828210171561202e57600080fd5b604052919050565b600067ffffffffffffffff82111561204d57600080fd5b5060209081020190565b600067ffffffffffffffff82111561206e57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b82818337506000910152565b60005b838110156120c15781810151838201526020016120a9565b83811115610bc65750506000910152565b601f01601f1916905600a265627a7a72305820a0a40171fa9a4e2ad6a7d6403e8b224565f747a1ee6e9f79130d49656d5c17bd6c6578706572696d656e74616cf50037")
			String dappbaseCode) throws Exception{

		return moacSubchainService.deployDappBase(subchainId,walletId,accountId,payPsw,dappbaseCode);
	}

	@PostMapping("/v1/{subchainId}/registerScs")
	@ApiOperation(value="9.scs注册入子链协议合约池")
	public ResponseEntity<ResponseBase<Map>> registerScs(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="scs地址",required=true)@RequestParam String scsAddress,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.registerScs(subchainId,walletId,accountId,payPsw,scsAddress);
	}

	@PostMapping("/v1/{subchainId}/registerAdd")
	@ApiOperation(value="10.子链增加scs,确保scs地址有MOAC")
	public ResponseEntity<ResponseBase<Map>> registerAdd(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="增加数量,默认增加1",required=true)@RequestParam(defaultValue="1") String addNum,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.registerAdd(subchainId,walletId,accountId,payPsw,addNum);
	}

	@PostMapping("/v1/{subchainId}/reset")
	@ApiOperation(value="11.子链重置")
	public ResponseEntity<ResponseBase<Map>> reset(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.reset(subchainId,walletId,accountId,payPsw);
	}

	@PostMapping("/v1/{subchainId}/addFund")
	@ApiOperation(value="12.子链充值")
	public ResponseEntity<ResponseBase<Map>> addFund(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="充值MOAC币数量,默认1",required=true)@RequestParam(defaultValue="1") String value,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.addFund(subchainId,walletId,accountId,payPsw,value);
	}

	@PostMapping("/v1/{subchainId}/close")
	@ApiOperation(value="13.子链关闭")
	public ResponseEntity<ResponseBase<Map>> close(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id(部署私链的账户)",required=true)@RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId) throws Exception{

		return moacSubchainService.close(subchainId,walletId,accountId,payPsw);
	}

	@GetMapping("/v1/info/{subchainId}")
	@ApiOperation(value="14.子链信息")
	public ResponseEntity<ResponseBase<Map>> info(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.info(subchainId,walletId,monitorScsId,monitorUrl);
	}

	@GetMapping("/v1/dapplist/{subchainId}")
	@ApiOperation(value="15.子链合约列表信息")
	public ResponseEntity<ResponseBase<List<String>>> dapplist(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.dapplist(subchainId,walletId,monitorScsId,monitorUrl);
	}

	@GetMapping("/v1/dappstate/{subchainId}")
	@ApiOperation(value="16.子链基础合约合约的状态")
	public ResponseEntity<ResponseBase<String>> dappstate(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.dappstate(subchainId,walletId,monitorScsId,monitorUrl);
	}

	@GetMapping("/v1/transaction/{subchainId}")
	@ApiOperation(value="17.子链交易信息")
	public ResponseEntity<ResponseBase<Map>> transaction(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl,
			@ApiParam(value="交易hash",required=true)
			@RequestParam String hash) throws Exception{

		return moacSubchainService.transaction(subchainId,walletId,monitorScsId,monitorUrl,hash);
	}

	@GetMapping("/v1/balance/{subchainId}")
	@ApiOperation(value="18.账户在子链上的余额")
	public ResponseEntity<ResponseBase<String>> balance(HttpServletRequest request,
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="账户地址",required=true)
			@RequestParam(required=true) String address,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.balance(subchainId,walletId,monitorScsId,monitorUrl,address);
	}

	@PostMapping("/v1/recharge1/{subchainId}")
	@ApiOperation(value="18.母链充币到子链（第一步），调用成功会返回hash(使用母链查询交易接口查询)，注：查询交易确认交易成功后调用第二步充值")
	public ResponseEntity<ResponseBase<Map<String, String>>> recharge1(
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="充币账户id",required=true) @RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="充币数量",required=true) @RequestParam String value) throws Exception{

		return moacSubchainService.recharge1(subchainId,walletId,accountId,payPsw,value);
	}

	@PostMapping("/v1/recharge2/{subchainId}")
	@ApiOperation(value="19.母链充币到子链（第二步），调用成功会返回hash(使用母链查询交易接口查询),注：查询交易确认交易成功后，查询子链余额是否到账")
	public ResponseEntity<ResponseBase<Map<String, String>>> recharge2(
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="充币账户id",required=true) @RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="充币数量",required=true) @RequestParam String value) throws Exception{

		return moacSubchainService.recharge2(subchainId,walletId,accountId,payPsw,value);
	}

	@PostMapping("/v1/withdraw/{subchainId}")
	@ApiOperation(value="20.子链提币到母链，调用成功会返回hash(使用子链查询交易接口查询)，注：提币交易成功后需要等一段时间才会提币到母链上")
	public ResponseEntity<ResponseBase<Map<String, String>>> withdraw(
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="提币账户id",required=true) @RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="提币数量",required=true) @RequestParam String value,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.withdraw(subchainId, walletId, accountId, payPsw, value, monitorScsId, monitorUrl);
	}

	@GetMapping("/v1/nonce/{subchainId}")
	@ApiOperation(value="22.获取账户在子链上的nonce")
	public ResponseEntity<ResponseBase<Map<String, String>>> getNonce(
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="账户id",required=true) @RequestParam String accountId,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.getNonce(subchainId,walletId,accountId,monitorScsId,monitorUrl);
	}

	@PostMapping("/v1/transfer/{subchainId}")
	@ApiOperation(value="23.子链转账，调用成功会返回hash(使用子链查询交易接口查询)")
	public ResponseEntity<ResponseBase<Map<String, String>>> transfer(
			@RequestHeader String accessToken,
			@RequestHeader String walletId,
			@ApiParam(value="发起账户id",required=true) @RequestParam String accountId,
			@ApiParam(value="支付密码",required=true)@RequestParam String payPsw,
			@ApiParam(value="子链id",required=true) @PathVariable("subchainId") String subchainId,
			@ApiParam(value="转账数量",required=true) @RequestParam String value,
			@ApiParam(value="接收账户",required=true) @RequestParam String to,
			@ApiParam(value="账户子链nonce,传空则使用当前nonce",required=false) @RequestParam(required=false) String nonce,
			@ApiParam(value="scs-monitor在系统中的id（通过接口2获取，与monitorUrl二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorScsId,
			@ApiParam(value="scs-monitor监控rpc地址（如：http://192.168.2.124:2345/rpc，与monitorScsId二选一传递，或都不传则缺省使用最新的monitor）",required=false)
			@RequestParam(required=false) String monitorUrl) throws Exception{

		return moacSubchainService.transfer(subchainId,walletId,accountId,payPsw,value,to,monitorScsId,monitorUrl,nonce);
	}

}
